Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Like this presentation? Why not share!

No Downloads

Total views

1,627

On SlideShare

0

From Embeds

0

Number of Embeds

1

Shares

0

Downloads

21

Comments

0

Likes

1

No embeds

No notes for slide

- 1. ADVANCED DATA STRUCTURES STACKS CRISTIAN REY C. SECO, MIT
- 2. Objectives At the end of the lesson, the student should be able to: Explain the basic concepts and operations on the ADT stack Implement the ADT stack using sequential and linked representation Discuss applications of stack: the pattern recognition problem and conversion from infix to postfix Explain how multiple stacks can be stored using one dimensional array Reallocate memory during stack overflow in multiple-stack array using unit-shift policy and Garwick's algorithm
- 3. Introduction Stack - linearly ordered set of elements having the last-in, first-out (LIFO) discipline Operations are done on top of the stack only and we have no access to other elements Basic operations: push and pop Representation: sequential or linked
- 4. Operations Insertion of new element onto the stack (push) Deletion of the top element from the stack (pop) Getting the size of stack Checking for empty stack Getting the top element without deleting it from the stack
- 5. Operations Push
- 6. Operations Pop
- 7. Operations procedure SPUSH(S,n,top,x) array S(1:n) if top = n then call STACKFULL top <- top + 1 S(top) <- x end SPUSH procedure SPOP(S,n,top,x) array S(1:n) if top = 0 then call STACKEMPTY else [ x <- S(top); top <- top –1 ] end SPOP
- 8. Operations public interface Stack { public int size(); /* returns the size of the stack */ public boolean isEmpty(); /* checks if empty */ public Object top() throws StackException; public Object pop() throws StackException; public void push(Object item) throws StackException; } class StackException extends RuntimeException { public StackException(String err) { super(err); } }
- 9. interface interface – reserved word in java, a class that contains only the method headings, and each method heading is terminated with a semicolon
- 10. inheritance Inheritance means that a new class can be derived from or based on an already existing class. The new class inherits features such as methods from the existing class, which saves a lot of time for programmers. Example: a newly define class StackException that would extend the definition of RuntimeException.
- 11. inheritance When you use inheritance, the class containing your application program will have more than one method. Constructor is a special type of method of a class that is automatically executed when an object of the class is created. It is used to initialize object. The name of the constructor is always the same as the name of the class
- 12. Implementations Sequential Representation Makes use of arrays Stack is empty if top=-1 and full if top=n-1 Deletion from an empty stack causes an underflow Insertion onto a full stack causes an overflow
- 13. Implementations public class ArrayStack implements Stack { public static final int CAPACITY = 1000; public int capacity; Object S[]; int top = -1; public ArrayStack() { this(CAPACITY); } public ArrayStack(int c) { capacity = c; S = new Object[capacity]; } public int size() { return (top+1); } public boolean isEmpty() { return (top < 0); }
- 14. Implementations public Object top() { if (isEmpty()) throw new StackException("Stack empty."); return S[top]; } public Object pop() { Object item; if (isEmpty()) throw new StackException("Stack underflow."); item = S[top]; S[top--] = null; return item; } public void push(Object item) { if (size()==capacity) throw new StackException ("Stack overflow."); S[++top]=item; }
- 15. Implementations •Linked Representation – A linked list of stack nodes could be used to implement a stack
- 16. Implementations public class LinkedStack implements Stack { private Node top; private int numElements = 0; public int size() { return (numElements); } public boolean isEmpty() { return (top == null); } public Object top() { if (isEmpty()) throw new StackException ("Stack empty."); return top.info; }
- 17. Implementations public Object pop() { Node temp; if (isEmpty()) throw new StackException("Stack underflow."); temp = top; top = top.link; return temp.info; } public void push(Object item) { Node newNode = new Node(); newNode.info = item; newNode.link = top; top = newNode; } }
- 18. Application: Infix to Postfix Expressions can be in: infix form - every subexpression is of the form operand-operator-operand postfix form - every subexpression is of the form operand-operand-operator, form most appropriate for computers
- 19. Application: Infix to Postfix Theorem: A postfix expression is well-formed if the rank of every proper head is greater than or equal to 1 and the rank of the expression is 1. Operator Priority Property Example ^ 3 right associative a^b^c = a^(b^c) * / 2 left associative a*b*c = (a*b)*c + - 1 left associative a+b+c = (a+b)+c
- 20. Application: Infix to Postfix Examples: Infix Expression Postfix Expression a * b + c / d a b * c d / - a ^ b ^ c - d a b c ^ ^ d - a * ( b + ( c + d ) / e ) - f a b c d + e /+* f - a * b / c + f * ( g + d ) / ( f – h ) ^ i a b * c / f g d + * f h – i ^ / +
- 21. Application: Infix to Postfix Exercises: Infix Expression 1) a * b + c / d a b * c d / - 2) a ^ b ^ c - d a b c ^ ^ d - 3) a * ( b + ( c + d ) / e ) - f a b c d + e /+* f - 4) a * b / c + f * ( g + d ) / ( f – h ) ^ i a b * c / f g d + * f h – i ^ / +

No public clipboards found for this slide

×
### Save the most important slides with Clipping

Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.

Be the first to comment