data structure lecture-2
DESCRIPTION
Data Structure Lecture-2. Prepared by: Shipra Shukla Assistant Professor Kaziranga University. Stack. A Stack is a linear data structure in which a data item is inserted and deleted at one record. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/1.jpg)
Data StructureLecture-2
Prepared by:Shipra Shukla
Assistant ProfessorKaziranga University
![Page 2: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/2.jpg)
Stack
• A Stack is a linear data structure in which a data item is inserted and deleted at one record.
• A stack is called a Last In First Out (LIFO) structure because the data item inserted last is the data item deleted first from the stack.
![Page 3: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/3.jpg)
Cont..
• Stacks are used most used is system software such as compilers, operating systems, etc. In fact, many compilers store the local variables inside a function on the stack.
• Stack is a specialized data storage structure (Abstract data type).
![Page 4: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/4.jpg)
Functions in Stack
1. createStack function– This function takes the maximum number of elements (maxElements) the stack can hold as an argument, creates a stack according to it and returns a pointer to the stack. It initializes Stack S
2. push function - This function takes the pointer to the top of the stack S and the item (element) to be inserted as arguments. Check for the emptiness of stack
3. pop function - This function takes the pointer to the top of the stack S as an argument.
4. top function – This function takes the pointer to the top of the stack S as an argument and returns the topmost element of the stack S.
![Page 5: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/5.jpg)
![Page 6: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/6.jpg)
![Page 7: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/7.jpg)
Example:
Create the stack S using createStack function, where S is the pointer to the structure Stack. Themaximum number of elements (maxElements) = 5.
Initially S->size = 0 and S->capacity = 5.
1. push(S,7): Since, S->size = S->capacity push 7 on the top of it and increase its size byone. Now, size = 1.7
2. push(S,5): Since, S->size = S->capacity push 5 on the top of it and increase its size byone. Now, size = 2.
57
3. push(S,21): Since, S->size = S->capacity push 21 on the top of it and increase its sizeby one. Now, size = 3.
2157
![Page 8: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/8.jpg)
4. push(S,-1): Since, S->size = S->capacity push -1 on the top of it and increase its sizeby one. Now, size = 4.
-12157
5. top(S): Since, S->size(=4) is not equal to zero. It returns the topmost element i.e. -1.Output = ‘-1’.
6. pop(S): Since, S->size(=4) is not equal to zero. It removes the topmost element i.e. -1by simply reducing size of the stack S by 1. Now, size = 3.
2157
7. top(S): Since, S->size(=3) is not equal to zero. It returns the topmost element i.e. 21.Output = ‘21’.
![Page 9: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/9.jpg)
8. pop(S): Since, S->size(=3) is not equal to zero. It removes the topmost element i.e. 21by simply reducing size of the stack S by 1. Now, size = 2.
57
9. pop(S): Since, S->size(=2) is not equal to zero. It removes the topmost element i.e. 5by simply reducing size of the stack S by 1. Now, size = 1.
7
10. pop(S): Since, S->size(=1) is not equal to zero. It removes the topmost element i.e. 7
by simply reducing size of the stack S by 1. Now, size = 0.
11. pop(S): Since, S->size(=0) is equal to zero. Output is ‘Stack is Empty’.
![Page 10: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/10.jpg)
AlGORITHM OF PUSH
Push(stack[maxsize],item)Let stack [maxsize] is an array for implementing the stack1.if Top=maxsize-1 then print overflow and exit2.Set Top=Top+1 [increase by 1]3.Set Stack[Top]=item4.Exit
![Page 11: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/11.jpg)
C Functionvoid push(){ int item;If (top== maxsize-1){ printf(“\n stack is full”); getch(); exit(0);}else{ printf(“\nEnter the element”); scanf(“%d”,&item); top=top+1; stack[top]=item;}}
![Page 12: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/12.jpg)
AlGORITHM OF POPPOP(stack[maxsize],item)Let stack[maxsize] is an array for implementing the stack1.[CHECK FOR THE STACK UNDERFLOW]
If top<0 then print stack underflow and exit.
else [remove the top element]Set item=stack[top]
2.Decrement the stack topSet top=top-1
3.Return the deleted item from the stack
4.exit
![Page 13: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/13.jpg)
C Functionint pop(){ int item;If (top== -1){ printf(“\n stack is empty”); getch(); exit(0);}else{ Item=stack[top];top=top-1;} printf(“\nThe element which has been deleted is:”);return(item);}
![Page 14: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/14.jpg)
Polish Notations
• The process of writing the operators of an expression either before their operands or after them is called Polish notation.
• The notation was introduced by "Jan Lukasiewicz ".
• it assumes that an arithmetic operations can be take place between two operands only. For example, A+B, C*D, D/A etc.
• The computer system can understand and work only on binary paradigm
![Page 15: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/15.jpg)
• The notation refers to these complex arithmetic expressions in three forms
• – If the operator symbols are placed between its operands, then the expression is in infix notation. Ex: A+B
•– If the operator symbols are placed before its operands, then the expression is in prefix notation. Ex: +AB
–If the operator symbols are placed after its operands, then the expression is in postfix notation Ex: AB+
![Page 16: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/16.jpg)
Levels of precedence
• The binary operations in Q may have different levels of precedence.
• Highest : Exponentiation ( ↑ )
• Next highest : Multiplication ( * ) and division ( / )
• Lowest : Addition ( + ) and subtraction ( - )
![Page 17: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/17.jpg)
Application of Stacks:Postfix Expression
![Page 18: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/18.jpg)
Evaluation of a Postfix Expression AlgorithmThis algorithm finds the VALUE of an arithmetic expression P written in postfix notation.1. Add a right parenthesis ")"at the end of P. [This acts as a sentinel].2. Scan P from left to right and repeat Steps 3 and 4 for each element of until the sentinel ")" is encountered.3. If an operand is encountered, put it on STACK.4. If an operator (x) is encountered, then:a) Remove the two top elements of STACK, where A is the top element and B is the next-to-top element.b) Evaluate B (x) A.c) Place the result of (b) back on STACK [End of If structure.] [End of Step 2 loop.]5. Set VALUE equal to the top element on STACK.6. Exit.
![Page 19: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/19.jpg)
Application of Stacks:Postfix Expression
Stack after pushing 6
Stack after pushing 3
Stack after retrieving the top two elements and popping twice
Stack after pushing the result of op1 + op2, which is 9
![Page 20: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/20.jpg)
Application of Stacks:Postfix Expression
Stack after pushing 2
Stack after retrieving the top two elements and popping twice
Stack after pushing the result of op1 * op2, which is 18
Stack after popping the element
![Page 21: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/21.jpg)
Example
• Consider the following arithmetic expression P written in postfix notation:
• P: 5, 6, 2, +, *, 12, 4, /, -
• We evaluate P using algorithm. First we add a sentinel right parenthesis at the end of P to obtain
• P: 5, 6, 2, +, *, 12, 4, /, -, ) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
![Page 22: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/22.jpg)
Questions• 1. Stacks are sometimes called FIFO lists
True/False
• 2. Stack allows Push and Pop from both ends True/False
• 3. TOS (Top of the Stack) gives the bottom most element in the stack. True/False
![Page 23: Data Structure Lecture-2](https://reader036.vdocuments.us/reader036/viewer/2022070423/5681671b550346895ddb93c6/html5/thumbnails/23.jpg)
Symbol Scanned STACK
(1) 5(2) 6(3) 2(4) +(5) *(6) 12(7) 4(8) /(9) -(10) )
55, 65, 6, 25, 84040, 1240, 12, 440, 337