Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras

Size: px
Start display at page:

Download "Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras"

Transcription

1 Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras Module 06 Lecture - 46 Stacks: Last in first out Operations: push, pop Example: convert expression to postfix Implementation of stack Good morning class, in the last class we did the ADT call list. (Refer Slide Time: 00:17) And to just recap what is the ADT list? List is the sequence of items unordered items for that matter and then we defined a whole lot of operations on list. We also looked at the implementation of list, what we talk about, we talked about two different implementations although I showed you in detail link list implementation. Both the array and the link list and I showed you a link list implementation of the list. I encourage you to do the array implementation of the list. Now, I just have some problems over here, I would like you to work on storing sets I gave you an example of storing sets using list.

2 (Refer Slide Time: 00:58) And basically we want to perform operations on set union, intersection and set A minus set B. (Refer Slide Time: 01:05) I also want you to look at another application of list is what we call infinite precision arithmetic. That is if you want to do let us say you have a 64 bit machine and you want higher precision in 64 bit, then you can use the list as a structure to perform arithmetic on it.

3 (Refer Slide Time: 01:32) So, basically what we do is, what we are talking about is in the list here you are a 1, a 2, a 3 up to a n corresponds to different parts of the given number and then you define operations to perform arithmetic operations on this number represented as a list of element. What I mean by that is, the numbers represented in parts in terms of a 1, a 2,..., a n and you want to perform arithmetic operations on them. So, I would like you to try these problems. (Refer Slide Time: 02:04) I also have a few assignment problems we talked about this a little in the last class. But, I would like you to write a function to remove duplicates in a given list using only list

4 operations. And basically a function which takes a list and returns the purged list and I also want you to convert a given unordered list into an ordered list, again it should be done in place. So, I would like you to do these two problems on this. (Refer Slide Time: 02:27) Now, next what we going to talk about is the different type of ADT called a stack. What are the stack now? Stack is also a list, but it has a fundamental difference, it is the special type of list ADT and the difference in the stack is that it operates on principles of what is called last in, first out. What is the meaning of this, that is the last element which enters into the list is removed first, this is called a stack. Now, let me give you some example when you putting books on your table, then you put the top most, the most recent book will be the top most book and then when you remove for example, if you want to remove this particular book, you remove the top two books before you can remove this book.

5 (Refer Slide Time: 03:35) And other example let us talk about plates that are stacked in a cupboard, see put your plates over here and like this and you remove the top most plate. The most recent plate is what is first removed, if you want to remove the third plate from the top plate, you remove the first two before you can remove the third plate. So, stack has lot of nice applications and we will talk about a specific application of a stack. (Refer Slide Time: 03:57) The operations that are supported by the stack are you can push, you can pop and you can find what is the top most element in the stack, can also check whether the given stack is

6 empty or not. So, these are the four operations that are normally supported by the stack and now since stack is a special type of list, I want to show you one example here where, since you know now the way we looked at it is, I have already implemented the list ADT and since I have already implemented the list ADT, I would like to use that list itself to represent a stack. So, how do I go about doing that, the way I would do that is since the list ADT has been you know you already debugged it, you have tested it and so on and so forth. So, what we could do is we could use the list ADT itself as a stack. So, how would I do that then, then what I will do is I will restrict my operations. (Refer Slide Time: 05:07) So, what I will says that the push operation, so with in my I can write an ADT stack here and says that stack or a class stack and I will say that I have l which is of type list which have I already defined it. This is my private data, then I will define a set of operations on stack and what are the operations that I want, I want push, I want pop, I want top and then I want empty. So, what will I do for push now also push (x,l.first()), what does the l.first() return, it returns the position of the first element. So, insert it at the first position, then I can pop, I can pop l.delete(l.first()). So, this was the most recent element that was inserted, top will also give me l.retrieve(l.first()), and what should be, empty is if the l.first()=l.end(), then I can say that the stack is empty. So, what I have done this process here now, we have all these operations over here and top should be

7 retrieve of top, it should be l.retrieve(l.first()), this is how you do implement all these four operations of the stack using the list. So, you can use the list ADT in it is present form which you implemented well as the stack ADT and perform the four operations which are required for the stack, now what we will do is somewhat I have this. So, this is one of the thing I am trying to encourage you to do is that basically that if I also have a ADT which is implemented, I try to reuse the abstract data type as much as possible. Because, why do I wanted to do that, the primary reason I wanted to do that is the list ADT which we implemented in the last class, we let us say nicely debugged, no errors in it. So, what I will do is I will quickly define a stack using the list and then I will use a stack to perform various operations. What I am going to do right now is I am going to give you one application of stacks and then we will look at the implementation of the stack a little later. (Refer Slide Time: 08:08) Let us say I want to convert an infix expression to postfix expression.

8 (Refer Slide Time: 08:15) Let us see, why you want to do this, let us say I have an expression which is given like this. Let us say I am given an expression like this a b c +d ( f + c /d ) and suppose we know that, star and slash had higher precedence than minus and plus and the all operators are left associative. What do we mean by this is that a b +c=( a b ) +c, rather than a ( b +c ) that is we assume that all the operators associate to the left and this is a meaning of it. I am given a expression like this a b +c ( a b ) +c or should I perform a ( b +c ) I do not know whether I have to perform that is where the associativity matters. What is the interesting is that when I am given an expression like this and I do not know the associativity of the operators, it is difficult to evaluate this expression. So, what is done is given a particular expression, the expression is converted to a form called the postfix expression. So, let us see what this postfix expressions is all about, let me just take only a partial expression a b c let us say, this will be written as abc*-. What is the meaning of it, we take the top most operator. Then, you come to the next operator and the next one is still an operator, so you push it somewhere, take the next operator, again you use the stack for this. Then, you find on the top there are two operands over here you compute this b*c. The idea is that what happens is the operator associate with the some binary operator associates with the nearest operands that are there. So, what is nice is the advantage of this expression when you write it in this form, there is no issue about the evaluation. Why is the

9 no issue about the evaluation? Because, you look at the operator, you just for example, if I keep moving along this as soon as a come across the first operator, all that I will do is I take this operator, operated on these two operands get the result and put it there and that we call it d, then I have ad-. Then, it means after find I am assume a-d. So, that is absolutely no ambiguity when a given expression is given in postfix, the order of the operations. Whereas, if I give the expression in this form which is called infix, I do not know whether I am has to perform a minus b star c, I do not know the associativity, I do not know the precedence of the operators. Everything is subsumed in the postfix expression. Given a postfix expression all are I have to do is I traverse that postfix expression from left to right, as soon as I come across an operator I take the nearest two operands, perform the computation, then you can put it back on stack, this is the way of evaluating again using the stack. Then, once again the result I have ad- on the particular stack, then again when I traverse this for example, next I see another operand over here and as soon as I see another operator over here, then I take the most nearest two operands, perform this operation and I get the result. So, the evaluation of expressions is normally done using the postfix expression. You take an infix expression it is very convenient for us to write. But, what we will do is we take the infix expression, convert the infix expression to a postfix expression and then perform the computation. So, now what I am going to show you is the evaluation also can be done using stacks, but it will take one application. We look at conversion of infix to postfix using the stack, let us see how you get this done. So, what is it done here, when an operand is read that is I am getting this expression here as soon as I find an operand, what am I going to do I am just going to simply place it on the output.

10 (Refer Slide Time: 14:18) Then, when an operator is read, what do I do, I take this operator, so that means, let us go back to this particular expression, take this expression now I see an operand I put it, this is my output, this is my input, then what do I do I put it to the output. When an operators read, what I do is I look at the element I have a stack here, right now my stack is empty. Look at the element which is there one on the top of the stack, if the top of the stack has higher precedence, then I keep popping all the elements from the top of the stack. (Refer Slide Time: 14:58) So, this part is not that, because it is empty, so what I am going to do, I am going to simply

11 stack the current operator, I put - on it, then I have b here then what do I see, then I have a another operator over here. So, now I look at the top of the stack this is a - here, - has lower precedence. So, what I do I just simply stack star also on to it, then again I see an operand move it to the output. Next what do I see, I see a +, when I see a + what I do is the following, I look at the content on the top of the stack. So, * is the content on the top of the stack, so since * is a content on the top of the stack I output and star has higher precedence. So, the precedence is like this *,/,+,- and of course, above this you have the (). So, what I do is I pop the *. Then, once since I pop the * what do I have, I only have minus on top of the stack. What the current operator that I am looking at +, now clearly + and - have same precedence. So, what I do I also pop the -, then what I do I put this + over here onto the stack and with precedence, this is how this whole operation course about. So, basically this is what we do and now I have done, up till this part of the expression. Now, let us look at the next one what do I have now, the + is gone it is gone to the stack, I get d, I push this on to the stack. Then, what do I have, I have a (, I put the ( also on to the stack. Then, what do I have, I have a ), then I put the + on to the stack, then I have c d, then I have a / over here and compare with what is there, put it on the top of the stack, then what happens I come across the right bracket. So, as soon as we come across the ) I pop everything of until I see the ( that mean I put the / here, I put the + here and then what do I do, I come to the end of the expression * and +. So, this is how I complete the expression.

12 (Refer Slide Time: 17:56) So, this is the conversion from infix to postfix. So, what we have done, we took the infix expression, then we converted it to a postfix expression using a stack. Now, let us see if it will give us the evaluation correctly, what did I say. I just keep this as it is, then as soon as I see an operator I find the nearest two operands and compute the computation. Let me call this b' that is I computed these two and let us say this result is b', then what do I have, I have ab'-. Now, clearly there are there are two operands and there is an operator, so I compute this let me call this a'. So, what do I have now, I have already computed this, now I have dfcd/+*+, so what do I do now, I keep moving from left, this is computed let me call it is c ', then I have a'dfc'+. So, what do I do, I compute this let me call this f ', so I have a'df'+ and sorry,+ is already gone. I already computed this sum over here and then I have a * over here and a =. So, next what do I do, I compute a'df' let me call it d' after the multiplication, because I see the multiplication here, multiply these two put the result in d ' I have a - and now finally I and get the result which is essentially what the... So, basically what it tells is if I follow the rules of arithmetic for a postfix gives expression, what is a rule say I take the whenever I see an operator, I take the nearest two operands, perform the computation and store it. Then, what happens that becomes a new operand now b', then ab' and this is an operator here -. So, I compute the difference of a and b', again I put it back on top. So, then I call it a', then what happens I have d f c d, I just put them all together,

13 then I see a /. When I see a / what do I do, I take the nearest two operands, divide them, here the operator is /, so I divide c by d I call it c '. Then, I have a prime dfc', then what happens I have fc'. So, this is this part, so I add them then what do I had a'df' let me call it, then df'* this * is here. So, I perform this computation and because that is the first operator that I am seeing I take the nearest two operands perform the computation, then finally I get let me call it I got a new operator, operand called d' and a'd'- and I subtracts one from the other and the postfix expression can be evaluated. So, clearly what it tells me is using the algorithm that I have given here, the conversion to infix to postfix is correct. So, basically I can use a stack to take this input convert it to postfix. So, whatever you doing when you doing this, we are taking all the operators, stacking the operators including brackets and when do we pop as soon as we come across an operator which has lower precedence than what is there in the stack, I pop all the operators from the stack which have higher precedence and the operators which have the same precedence too and put this operator on to the stack that is exactly what we did. Let me illustrate this with the pictorial example again. (Refer Slide Time: 21:57) So, let us say we have the same I have a same almost the same expression which I have already gone through over here and never realize it. This is the same expression that is there and here is a pictorial description of what is exactly happening stack the +, this is the top of

14 the stack, then a is kept outside and then you get abc then you put abc*, pop this and so on. So, this is how your output gets generated. As soon as you see a bracket you just push everything out. So, this is how you convert and invert... So, basically this is the first thing whether the stack is a stack of operators. So, what is happening now plus and star has stack, then as soon as the next plus comes you pop both plus and star, just I was already told to you and then you see the bracket, you put the bracket on top of the stack and repeat the same process again. So, this is essentially how stack can be used. (Refer Slide Time: 22:54) Now, let us look at the implementation of the stack and what are the operations, I am looking at a separate implementation. Let us say that I am not going to use the list, I want to implement my own stack. Before that what are time complexity of these operations when look at l.insert(), l.delete(), l.retrieve(), what will be the time complexity of all of these, if you can see if you look at the, it depends upon the kind of implementation. If the implementation is a linked list it does not matter, doing this particular case I am inserting at the first, all these operations can also be done in order one type, even when I am using the list. But, we can do a cleaner implementation, we can implement a stack. So, since that in this particular example I am using the operators I have created a stack which is I am using an array implementation here, this is your static array.

15 So, basically the stacks size here, see you would also like to have a stack full perhaps. So, I create or you resize the stack, if you want it to be transparent you can always resizes the stack. Then, you create an empty stack which is make null, then you push the character on to the stack, character pop returns the top most element on the stack, pop deletes the element from the top of the stack, empty tells you that the stack is empty. From here is how the various operations can be performed and basically what is interesting is all the operands, operations here, if you look at this. (Refer Slide Time: 24:37) If you look at the analysis of this I want you to go through this over here, make null it is simply creates the top of the stack to be stack size. Then, we just putting from pushing from the stack, what are we doing we here in push for example, I making the stack size, the top of stack initially match to the largest element possible in the array, largest index possible in the array, then what we do, we decrement the top of the stack and then push the element there and then when we... So, this is again an O(1) operation if you notice, this is an O(1) operation, this is an order one operation.

16 (Refer Slide Time: 25:17) Then, what we are doing if the top of stack is less than stack size, it is returning the top of stack that mean, otherwise what is happening when you performing a top operation, that is no element in the stack that is the meaning of this return 0 over here. Then, if top of stack greater than stack size returns 0 again; otherwise, what are we doing you are popping the particular element on the stack, that is when you are trying to pop more elements than there are, otherwise if there is an elements on the stack, it pops this. (Refer Slide Time: 25:47) Then, if stack is empty, it is top of stack is greater than stack size, then you say return greater

17 than or equal to stack size, then you say that the stack is empty. For the time complexity of all the operations, there are performance stacks using array is O(1). (Refer Slide Time: 26:12) Now, what I want you to do is I want you to go back and implement the stack, I given you an array implementation of stacks I want you to do a link list implementation of stack and all operations must cost the O(1). So, I want you to do go back and experiment this. Now, what I want to do is I will just close this with some applications. (Refer Slide Time: 26:46) Now, I want you to do this, right now we looked at operations, we only operators we only

18 looked at left associative operators. What happens if an operator associates to the right, let me give you an example. (Refer Slide Time: 27:04) If I had an example like this z x y, then what is this, this is essentially z ( x( y ) ). So, I want you to think of this how would you use is stack, how would you modify the infix to postfix converter, if you worked with operators which are right associative. The other function that I would like you to write is to determine whether the parentheses are balanced in a C program. I want you to look at all these types of parenthesis. I also want you to write a function that uses a stack you already talked about it to evaluate a postfix expression.

Programming, Data Structures and Algorithms Prof. Hema A Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras

Programming, Data Structures and Algorithms Prof. Hema A Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 54 Assignment on Data Structures (Refer Slide

There are many other applications like constructing the expression tree from the postorder expression. I leave you with an idea as how to do it.

Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 49 Module 09 Other applications: expression tree

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 07 Stack and Its Applications Welcome to module 5 of Programming

Formal Languages and Automata Theory, SS Project (due Week 14)

Formal Languages and Automata Theory, SS 2018. Project (due Week 14) 1 Preliminaries The objective is to implement an algorithm for the evaluation of an arithmetic expression. As input, we have a string

Lab 7 1 Due Thu., 6 Apr. 2017

Lab 7 1 Due Thu., 6 Apr. 2017 CMPSC 112 Introduction to Computer Science II (Spring 2017) Prof. John Wenskovitch http://cs.allegheny.edu/~jwenskovitch/teaching/cmpsc112 Lab 7 - Using Stacks to Create a

(Refer Slide Time 6:48)

Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 8 Karnaugh Map Minimization using Maxterms We have been taking about

STACKS. A stack is defined in terms of its behavior. The common operations associated with a stack are as follows:

STACKS A stack is a linear data structure for collection of items, with the restriction that items can be added one at a time and can only be removed in the reverse order in which they were added. The

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture 17 Switch Statement (Refer Slide Time: 00:23) In

Some Applications of Stack. Spring Semester 2007 Programming and Data Structure 1

Some Applications of Stack Spring Semester 2007 Programming and Data Structure 1 Arithmetic Expressions Polish Notation Spring Semester 2007 Programming and Data Structure 2 What is Polish Notation? Conventionally,

Stack Applications. Lecture 27 Sections Robb T. Koether. Hampden-Sydney College. Wed, Mar 29, 2017

Stack Applications Lecture 27 Sections 18.7-18.8 Robb T. Koether Hampden-Sydney College Wed, Mar 29, 2017 Robb T. Koether Hampden-Sydney College) Stack Applications Wed, Mar 29, 2017 1 / 27 1 Function

Lecture 12 ADTs and Stacks Modularity Divide the program into smaller parts Advantages Keeps the complexity managable Isolates errors (parts can be tested independently) Can replace parts easily Eliminates

Stacks Chapter 5 Contents Specifications of the ADT Stack Using a Stack to Process Algebraic Expressions A Problem Solved: Checking for Balanced Delimiters in an Infix Algebraic Expression A Problem Solved:

Infix to Postfix Conversion

Infix to Postfix Conversion Infix to Postfix Conversion Stacks are widely used in the design and implementation of compilers. For example, they are used to convert arithmetic expressions from infix notation

Data Structure using C++ Lecture 04. Data Structures and algorithm analysis in C++ Chapter , 3.2, 3.2.1

Data Structure using C++ Lecture 04 Reading Material Data Structures and algorithm analysis in C++ Chapter. 3 3.1, 3.2, 3.2.1 Summary Stack Operations on a stack Representing stacks Converting an expression

Lecture No.04. Data Structures

Lecture No.04 Data Structures Josephus Problem #include "CList.cpp" void main(int argc, char *argv[]) { CList list; int i, N=10, M=3; for(i=1; i

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 33 Overloading Operator for User - Defined Types: Part 1 Welcome

CSCI 204 Introduction to Computer Science II. Lab 6: Stack ADT

CSCI 204 Introduction to Computer Science II 1. Objectives In this lab, you will practice the following: Learn about the Stack ADT Implement the Stack ADT using an array Lab 6: Stack ADT Use a Stack to

Largest Online Community of VU Students

WWW.VUPages.com http://forum.vupages.com WWW.VUTUBE.EDU.PK Largest Online Community of VU Students MIDTERM EXAMINATION SEMESTER FALL 2003 CS301-DATA STRUCTURE Total Marks:86 Duration: 60min Instructions

Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute Technology, Madras

Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute Technology, Madras Module 03 Lecture - 26 Example of computing time complexity

(Refer Slide Time 3:31)

Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 5 Logic Simplification In the last lecture we talked about logic functions

Week - 01 Lecture - 03 Euclid's Algorithm for gcd. Let us continue with our running example of gcd to explore more issues involved with program.

Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 03 Euclid's Algorithm

Information Security II Prof. Kamakoti Department of Computer Science and Engineering Indian Institute of Technology, Madras

Information Security II Prof. Kamakoti Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 30 Task Switch recap - Week 6 (Refer Slide Time: 00:09) So welcome back

(Refer Slide Time: 01:00)

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture minus 26 Heuristics for TSP In this lecture, we continue our discussion

(Refer Slide Time: 0:19)

Theory of Computation. Professor somenath Biswas. Department of Computer Science & Engineering. Indian Institute of Technology, Kanpur. Lecture-15. Decision Problems for Regular Languages. (Refer Slide

Lecture Data Structure Stack

Lecture Data Structure Stack 1.A stack :-is an abstract Data Type (ADT), commonly used in most programming languages. It is named stack as it behaves like a real-world stack, for example a deck of cards

Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No. # 10 Lecture No. # 16 Machine-Independent Optimizations Welcome to the

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture - 04 Introduction to Programming Language Concepts

Week - 03 Lecture - 18 Recursion. For the last lecture of this week, we will look at recursive functions. (Refer Slide Time: 00:05)

Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 03 Lecture - 18 Recursion For the

(Refer Slide Time: 00:26)

Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute Technology, Madras Module 07 Lecture 07 Contents Repetitive statements

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 20 Priority Queues Today we are going to look at the priority

STACKS AND QUEUES. Problem Solving with Computers-II

STACKS AND QUEUES Problem Solving with Computers-II 2 Stacks container class available in the C++ STL Container class that uses the Last In First Out (LIFO) principle Methods i. push() ii. iii. iv. pop()

(Refer Slide Time: 06:01)

Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 28 Applications of DFS Today we are going to be talking about

Fundamentals of Operations Research. Prof. G. Srinivasan. Department of Management Studies. Indian Institute of Technology Madras.

Fundamentals of Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology Madras Lecture No # 06 Simplex Algorithm Initialization and Iteration (Refer Slide

COMP-421 Compiler Design. Presented by Dr Ioanna Dionysiou

COMP-421 Compiler Design Presented by Dr Ioanna Dionysiou Administrative! Any questions about the syllabus?! Course Material available at www.cs.unic.ac.cy/ioanna! Next time reading assignment [ALSU07]

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #23 Loops: Precedence of Operators

Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #23 Loops: Precedence of Operators This one more concept that we have to understand, before we really understand

Stacks. stacks of dishes or trays in a cafeteria. Last In First Out discipline (LIFO)

Outline stacks stack ADT method signatures array stack implementation linked stack implementation stack applications infix, prefix, and postfix expressions 1 Stacks stacks of dishes or trays in a cafeteria

Fundamentals of Operations Research. Prof. G. Srinivasan. Department of Management Studies. Indian Institute of Technology, Madras. Lecture No.

Fundamentals of Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture No. # 13 Transportation Problem, Methods for Initial Basic Feasible

EC8393FUNDAMENTALS OF DATA STRUCTURES IN C Unit 3

UNIT 3 LINEAR DATA STRUCTURES 1. Define Data Structures Data Structures is defined as the way of organizing all data items that consider not only the elements stored but also stores the relationship between

(Refer Slide Time: 00:02:00)

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 18 Polyfill - Scan Conversion of a Polygon Today we will discuss the concepts

An Introduction to Trees

An Introduction to Trees Alice E. Fischer Spring 2017 Alice E. Fischer An Introduction to Trees... 1/34 Spring 2017 1 / 34 Outline 1 Trees the Abstraction Definitions 2 Expression Trees 3 Binary Search

12 Abstract Data Types

12 Abstract Data Types 12.1 Foundations of Computer Science Cengage Learning Objectives After studying this chapter, the student should be able to: Define the concept of an abstract data type (ADT). Define

CS W3134: Data Structures in Java

CS W3134: Data Structures in Java Lecture #10: Stacks, queues, linked lists 10/7/04 Janak J Parekh HW#2 questions? Administrivia Finish queues Stack/queue example Agenda 1 Circular queue: miscellany Having

Monday, November 13, 2017

Monday, November 13, 2017 Topics for today ode generation nalysis lgorithm 1: evaluation of postfix lgorithm 2: infix to postfix lgorithm 3: evaluation of infix lgorithm 4: infix to tree nalysis We are

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture 18 Switch Statement (Contd.) And Introduction to

(Refer Slide Time 04:53)

Programming and Data Structure Dr.P.P.Chakraborty Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture 26 Algorithm Design -1 Having made a preliminary study

09 STACK APPLICATION DATA STRUCTURES AND ALGORITHMS REVERSE POLISH NOTATION

DATA STRUCTURES AND ALGORITHMS 09 STACK APPLICATION REVERSE POLISH NOTATION IMRAN IHSAN ASSISTANT PROFESSOR, AIR UNIVERSITY, ISLAMABAD WWW.IMRANIHSAN.COM LECTURES ADAPTED FROM: DANIEL KANE, NEIL RHODES

CS 206 Introduction to Computer Science II

CS 206 Introduction to Computer Science II 07 / 26 / 2016 Instructor: Michael Eckmann Today s Topics Comments/Questions? Stacks and Queues Applications of both Priority Queues Michael Eckmann - Skidmore

(Refer Slide Time: 02:59)

Numerical Methods and Programming P. B. Sunil Kumar Department of Physics Indian Institute of Technology, Madras Lecture - 7 Error propagation and stability Last class we discussed about the representation

Combinatorics Prof. Dr. L. Sunil Chandran Department of Computer Science and Automation Indian Institute of Science, Bangalore

Combinatorics Prof. Dr. L. Sunil Chandran Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 5 Elementary concepts and basic counting principles So, welcome

Stack Applications. Lecture 25 Sections Robb T. Koether. Hampden-Sydney College. Mon, Mar 30, 2015

Stack Applications Lecture 25 Sections 18.7-18.8 Robb T. Koether Hampden-Sydney College Mon, Mar 30, 2015 Robb T. Koether Hampden-Sydney College) Stack Applications Mon, Mar 30, 2015 1 / 34 1 The Triangle

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 14

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 14 Scan Converting Lines, Circles and Ellipses Hello everybody, welcome again

Mathematical Logic Prof. Arindama Singh Department of Mathematics Indian Institute of Technology, Madras. Lecture - 9 Normal Forms

Mathematical Logic Prof. Arindama Singh Department of Mathematics Indian Institute of Technology, Madras Lecture - 9 Normal Forms In the last class we have seen some consequences and some equivalences,

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Lecture - 8 Consistency and Redundancy in Project networks In today s lecture

(Refer Slide Time: 00:01:30)

Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 32 Design using Programmable Logic Devices (Refer Slide Time: 00:01:30)

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #33 Pointer Arithmetic

Introduction to Programming in C Department of Computer Science and Engineering Lecture No. #33 Pointer Arithmetic In this video let me, so some cool stuff which is pointer arithmetic which helps you to

Stack and Its Implementation

Stack and Its Implementation Tessema M. Mengistu Department of Computer Science Southern Illinois University Carbondale tessema.mengistu@siu.edu Room - 3131 1 Definition of Stack Usage of Stack Outline

(Refer Slide Time: 00:51)

Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute Technology, Madras Module 10 E Lecture 24 Content Example: factorial

Stack Abstract Data Type

Stacks Chapter 5 Chapter Objectives To learn about the stack data type and how to use its four methods: push, pop, peek, and empty To understand how Java implements a stack To learn how to implement a

(Refer Slide Time 5:19)

Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology, Madras Lecture - 7 Logic Minimization using Karnaugh Maps In the last lecture we introduced

Top of the Stack. Stack ADT

Module 3: Stack ADT Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Stack ADT Features (Logical View) A List that

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 24 Solid Modelling

Computer Graphics Prof. Sukhendu Das Dept. of Computer Science and Engineering Indian Institute of Technology, Madras Lecture - 24 Solid Modelling Welcome to the lectures on computer graphics. We have

(Refer Slide Time: 00:01:53)

Digital Circuits and Systems Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Lecture - 36 Design of Circuits using MSI Sequential Blocks (Refer Slide Time:

COMP 250 Winter stacks Feb. 2, 2016

Stack ADT You are familiar with stacks in your everyday life. You can have a stack of books on a table. You can have a stack of plates on a shelf. In computer science, a stack is an abstract data type

We have already seen the transportation problem and the assignment problem. Let us take the transportation problem, first.

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture 19 Network Models In this lecture, we will discuss network models. (Refer

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

Programming, Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 05 I/O statements Printf, Scanf Simple

March 13/2003 Jayakanth Srinivasan,

Statement Effort MergeSort(A, lower_bound, upper_bound) begin T(n) if (lower_bound < upper_bound) Θ(1) mid = (lower_bound + upper_bound)/ 2 Θ(1) MergeSort(A, lower_bound, mid) T(n/2) MergeSort(A, mid+1,

Computer Architecture Prof. Mainak Chaudhuri Department of Computer Science & Engineering Indian Institute of Technology, Kanpur

Computer Architecture Prof. Mainak Chaudhuri Department of Computer Science & Engineering Indian Institute of Technology, Kanpur Lecture - 7 Case study with MIPS-I So, we were discussing (Refer Time: 00:20),

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

Advanced Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Lecture 16 Cutting Plane Algorithm We shall continue the discussion on integer programming,

Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute. Week 02 Module 06 Lecture - 14 Merge Sort: Analysis

Design and Analysis of Algorithms Prof. Madhavan Mukund Chennai Mathematical Institute Week 02 Module 06 Lecture - 14 Merge Sort: Analysis So, we have seen how to use a divide and conquer strategy, we

Stacks and their Applications

Stacks and their Applications Lecture 23 Sections 18.1-18.2 Robb T. Koether Hampden-Sydney College Fri, Mar 16, 2018 Robb T. Koether Hampden-Sydney College) Stacks and their Applications Fri, Mar 16, 2018

Top of the Stack. Stack ADT

Module 3: Stack ADT Dr. Natarajan Meghanathan Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Stack ADT Features (Logical View) A List that

1. Stack Implementation Using 1D Array

Lecture 5 Stacks 1 Lecture Content 1. Stack Implementation Using 1D Array 2. Stack Implementation Using Singly Linked List 3. Applications of Stack 3.1 Infix and Postfix Arithmetic Expressions 3.2 Evaluate

Biostatistics and Design of Experiments Prof. Mukesh Doble Department of Biotechnology Indian Institute of Technology, Madras

Biostatistics and Design of Experiments Prof. Mukesh Doble Department of Biotechnology Indian Institute of Technology, Madras Lecture - 37 Other Designs/Second Order Designs Welcome to the course on Biostatistics

The Stack ADT. Stacks. The Stack ADT. The Stack ADT. Set of objects in which the location an item is inserted and deleted is prespecified.

The Stack ADT Stacks Set of objects in which the location an item is inserted and deleted is prespecified Stacks! Insert in order! Delete most recent item inserted! LIFO - last in, first out Stacks 2 The

Computer Algorithms-2 Prof. Dr. Shashank K. Mehta Department of Computer Science and Engineering Indian Institute of Technology, Kanpur

Computer Algorithms-2 Prof. Dr. Shashank K. Mehta Department of Computer Science and Engineering Indian Institute of Technology, Kanpur Lecture - 6 Minimum Spanning Tree Hello. Today, we will discuss an

Stacks (Section 2) By: Pramod Parajuli, Department of Computer Science, St. Xavier s College, Nepal.

(Section 2) Linked list implementation of stack Typical Application of stacks Evaluation of expressions (infix, postfix, prefix) References and further details By: Pramod Parajuli, Department of Computer

DATA STRUCTURE UNIT I

DATA STRUCTURE UNIT I 1. What is Data Structure? A data structure is a mathematical or logical way of organizing data in the memory that consider not only the items stored but also the relationship to

Programming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras

Programming Data Structures and Algorithms Prof. Shankar Balachandran Department of Computer Science Indian Institute of Technology, Madras Module 12B Lecture - 41 Brief introduction to C++ Hello, welcome

Lecture 4 Stack and Queue

Lecture 4 Stack and Queue Bo Tang @ SUSTech, Spring 2018 Our Roadmap Stack Queue Stack vs. Queue 2 Stack A stack is a sequence in which: Items can be added and removed only at one end (the top) You can

Postfix (and prefix) notation

Postfix (and prefix) notation Also called reverse Polish reversed form of notation devised by mathematician named Jan Łukasiewicz (so really lü-kä-sha-vech notation) Infix notation is: operand operator

Data Structure (CS301)

WWW.VUPages.com http://forum.vupages.com WWW.VUTUBE.EDU.PK Largest Online Community of VU Students Virtual University Government of Pakistan Midterm Examination Spring 2003 Data Structure (CS301) StudentID/LoginID

Error Correcting Codes Dr. P. Vijay Kumar Electrical Communication Engineering Indian Institute of Technology, Bangalore

Error Correcting Codes Dr. P. Vijay Kumar Electrical Communication Engineering Indian Institute of Technology, Bangalore Lecture No. # 02 Examples Codes and their Parameters (Refer Slide Time: 00:37).

CS Introduction to Data Structures How to Parse Arithmetic Expressions

CS3901 - Introduction to Data Structures How to Parse Arithmetic Expressions Lt Col Joel Young One of the common task required in implementing programming languages, calculators, simulation systems, and

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur

Problem Solving through Programming In C Prof. Anupam Basu Department of Computer Science & Engineering Indian Institute of Technology, Kharagpur Lecture 15 Branching : IF ELSE Statement We are looking

Digital Communication Prof. Bikash Kumar Dey Department of Electrical Engineering Indian Institute of Technology, Bombay

Digital Communication Prof. Bikash Kumar Dey Department of Electrical Engineering Indian Institute of Technology, Bombay Lecture - 29 Source Coding (Part-4) We have already had 3 classes on source coding

Introduction to Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras

Introduction to Operations Research Prof. G. Srinivasan Department of Management Studies Indian Institute of Technology, Madras Module - 05 Lecture - 24 Solving LPs with mixed type of constraints In the

CSE 401 Midterm Exam 11/5/10

Name There are 5 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. The exam is closed books, closed notes, closed

DEEPIKA KAMBOJ UNIT 2. What is Stack?

What is Stack? UNIT 2 Stack is an important data structure which stores its elements in an ordered manner. You must have seen a pile of plates where one plate is placed on top of another. Now, when you

2.2 Syntax Definition

42 CHAPTER 2. A SIMPLE SYNTAX-DIRECTED TRANSLATOR sequence of "three-address" instructions; a more complete example appears in Fig. 2.2. This form of intermediate code takes its name from instructions

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 31 Static Members Welcome to Module 16 of Programming in C++.

Stacks Chapter 5 Copyright 2012 by Pearson Education, Inc. All rights reserved Contents Specifications of the ADT Stack Using a Stack to Process Algebraic Expressions A Problem Solved: Checking for Balanced

Data Structures & Algorithm Analysis. Lecturer: Souad Alonazi

Data Structures & Algorithm Analysis Lec(3) Stacks Lecturer: Souad Alonazi What is a stack? Stores a set of elements in a particular order Stack principle: LAST IN FIRST OUT = LIFO It means: the last element

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture - 08 Constants and Inline Functions Welcome to module 6 of Programming

Introduction to Linked List: Review. Source:

Introduction to Linked List: Review Source: http://www.geeksforgeeks.org/data-structures/linked-list/ Linked List Fundamental data structures in C Like arrays, linked list is a linear data structure Unlike

CDA 3103 Computer Organization Homework #7 Solution Set

CDA 3103 Computer Organization Homework #7 Solution Set 1 Problems 1. Write a MARIE assembly program for the following algorithm where the subroutine takes two numbers and returns their product. Your assembly

(Refer Slide Time 01:41 min)

Programming and Data Structure Dr. P.P.Chakraborty Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture # 03 C Programming - II We shall continue our study of

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Principle of Complier Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Lecture - 20 Intermediate code generation Part-4 Run-time environments