stack & queue

40
STACKS & QUEUES Presented by :- MANJU RANI

Upload: manju-rani

Post on 17-Jan-2017

198 views

Category:

Education


1 download

TRANSCRIPT

Page 1: stack & queue

STACKS & QUEUES

Presented by :- MANJU RANI

Page 2: stack & queue

DATA STRUCTUR

E

LINEAR DATA STRUCTURE

ARRAY QUEUE STACK

NON LINEAR DATA

STRUCTURE

Page 3: stack & queue

What is Linear Data Structure

In linear data structure, data is arranged in linear sequence.

 Data items can be traversed in a single run.

 In linear data structure elements are accessed or placed in contiguous(together in sequence) memory location. 

Page 4: stack & queue

WHAT Is A stack is called a last-in-first-out (LIFO) collection. This means that the last thing we added (pushed) is the first thing that gets pulled (popped) off.

A stack is a sequence of items that are accessible at only one end of the sequence.

Page 5: stack & queue

EXAMPLES OF STACK:

Page 6: stack & queue

Operations that can be performed on STACK: PUSH.

POP.

Page 7: stack & queue

PUSH : It is used to insert items into the stack.POP: It is used to delete items from stack.TOP: It represents the current location of data in stack.

Page 8: stack & queue

ALGORITHM OF INSERTION IN STACK: (PUSH)1. Insertion(a,top,item,max)2. If top=max then print ‘STACK OVERFLOW’ exit else3. top=top+1 end if4. a[top]=item5. Exit

Page 9: stack & queue

ALGORITHM OF DELETION IN STACK: (POP)

1. Deletion(a,top,item)2. If top=0 then print ‘STACK UNDERFLOW’ exit else3. item=a[top] end if4. top=top-15. Exit

Page 10: stack & queue

ALGORITHM OF DISPLAY IN STACK:1.Display(top,i,a[i])2.If top=0 then Print ‘STACK EMPTY’ Exit Else3.For i=top to 0 Print a[i] End for4.exit

Page 11: stack & queue

APPLICATIONS OF STACKS ARE:

I. Reversing Strings:• A simple application of stack is reversing

strings. To reverse a string , the characters of string are pushed onto the stack one by one as the string is read from left to right. • Once all the characters of string are pushed onto stack, they are popped one by one. Since the character last pushed in comes out first, subsequent pop operation results in the reversal of the string.

Page 12: stack & queue

For example: To reverse the string ‘REVERSE’ the string is read from left to right and its characters are pushed . LIKE: onto a stack.

Page 13: stack & queue

II. Checking the validity of an expression containing nested parenthesis:

• Stacks are also used to check whether a given

arithmetic expressions containing nested parenthesis is properly parenthesized.• The program for checking the validity of an expression verifies that for each left parenthesis braces or bracket ,there is a corresponding closing symbol and symbols are appropriately nested.

Page 14: stack & queue

For example:VALID INPUTS INVALID INPUTS

{ }( { [ ] } ){ [ ] ( ) }[ { ( { } [ ] ( { })}]

{ ( }( [ ( ( ) ] ){ } [ ] )[ { ) } ( ] } ]

Page 15: stack & queue

III. Evaluating arithmetic expressions:

INFIX notation: The general way of writing arithmetic expressions is known as infix notation. e.g, (a+b)

PREFIX notation: e.g, +AB

POSTFIX notation: e.g: AB+

Page 16: stack & queue

Conversion of INFIX to POSTFIX conversion:Example: 2+(4-1)*3 step1 2+41-*3 step2 2+41-3* step3 241-3*+ step4

Page 17: stack & queue

CURRENT SYMBOL

ACTION PERFORMED

STACK STATUS POSTFIX EXPRESSION

( PUSH C C 22 2+ PUSH + (+ 2( PUSH ( (+( 244 24- PUSH - (+(- 2411 POP 241-) (+ 241-* PUSH * (+* 241-3 241-3

POP * 241-3*POP + 241-3*+

)

CONVERSION OF INFIX INTO POSTFIX 2+(4-1)*3 into 241-3*+

Page 18: stack & queue

Queues Queue is an ADT data structure similar to stack,

except that the first item to be inserted is the first one to be removed.

This mechanism is called First-In-First-Out (FIFO). Placing an item in a queue is called “insertion or

enqueue”, which is done at the end of the queue called “rear”.

Removing an item from a queue is called “deletion or dequeue”, which is done at the other end of the queue called “front”.

Some of the applications are : printer queue, keystroke queue, etc.

Page 19: stack & queue

Operations On A Queue

1.To insert an element in queue

2.Delete an element from queue

Page 20: stack & queue

The Queue OperationPlacing an item in a queue is called “insertion or enqueue”, which is done at the end of the queue called “rear”.

FrontRear

Page 21: stack & queue

The Queue Operation Removing an item from a queue is called “deletion or dequeue”, which is done at the other end of the queue called “front”.

FrontRear

Page 22: stack & queue

Algorithm QINSERT (ITEM)

1.If (rear = maxsize-1 )print (“queue overflow”) and return

2.Else rear = rear + 1

Queue [rear] = item

Page 23: stack & queue

Algorithm QDELETE ()

1.If (front =rear)print “queue empty” and return

2. Else Front = front + 1 item = queue [front]; Return item

Page 24: stack & queue

Queue Applications

Real life examplesWaiting in lineWaiting on hold for tech support

Applications related to Computer ScienceRound robin schedulingJob scheduling (FIFO Scheduling)Key board buffer

Page 25: stack & queue

3 states of the queue

1.Queue is emptyFRONT=REAR

2.Queue is fullREAR=N

3.Queue contains element >=1FRONT<REARNO. OF ELEMENT=REAR-FRONT+1

Page 26: stack & queue

Representation Of Queues

1.Using an array2.Using linked list

Page 27: stack & queue

Circular Queue To solve this problem, queues implement

wrapping around. Such queues are called Circular Queues.

Both the front and the rear pointers wrap around to the beginning of the array.

It is also called as “Ring buffer”. Items can inserted and deleted from a

queue in O(1) time.

Page 28: stack & queue

Queue Example

+Queue()+insert() : void+remove() : long+peekFront() : long+isEmpty() : bool+isFull() : bool+size() : int

-maxSize : int-queueArray [] : long-front : int-rear : int-nItems : int

Queue

QueueApp

Interface1

Page 29: stack & queue

Queue sample code C:\Documents and Settings\box\My Docume

nts\CS\CSC\220\ReaderPrograms\ReaderFiles\Chap04\Queue\queue.java

Page 30: stack & queue

Various Queues Normal queue (FIFO) Circular Queue (Normal Queue) Double-ended Queue (Deque) Priority Queue

Page 31: stack & queue

Deque It is a double-ended queue. Items can be inserted and deleted from

either ends. More versatile data structure than stack or

queue. E.g. policy-based application (e.g. low

priority go to the end, high go to the front) In a case where you want to sort the

queue once in a while, What sorting algorithm will you use?

Page 32: stack & queue

Priority Queues More specialized data structure. Similar to Queue, having front and rear. Items are removed from the front. Items are ordered by key value so that the

item with the lowest key (or highest) is always at the front.

Items are inserted in proper position to maintain the order.

Let’s discuss complexity

Page 33: stack & queue

Priority Queue Example

+Queue()+insert() : void+remove() : long+peekMin() : long+isEmpty() : bool+isFull() : bool

-maxSize : int-queueArray [] : long-nItems : int

PrioityQ

PriorityQApp

Interface1

Page 34: stack & queue

Priority Queues Used in multitasking operating system. They are generally represented using

“heap” data structure. Insertion runs in O(n) time, deletion in O(1)

time. C:\Documents and Settings\box\My Documents\CS\CSC\220\ReaderPrograms\ReaderFiles\Chap04\PriorityQ\priorityQ.java

Page 35: stack & queue

Parsing Arithmetic Expressions

2 + 3 2 + 4 * 5 ((2 + 4) * 7) + 3* (9 – 5))

Infix vs postfix Why do we want to do this

transformation?

• 2 3 +• 2 4 5 * +• 2 4 + 7 * 3 9 5 - * +

Page 36: stack & queue

Infix to postfix Read ch from input until empty

◦ If ch is arg , output = output + arg◦ If ch is “(“, push ‘(‘;◦ If ch is op and higher than top push ch◦ If ch is “)” or end of input,

output = output + pop() until empty or top is “(“◦ Read next input

C:\Documents and Settings\box\My Documents\CS\CSC\220\ReaderPrograms\ReaderFiles\Chap04\Postfix\postfix.java

Page 37: stack & queue

Postfix eval 5 + 2 * 3 -> 5 2 3 * + Algorithm

◦ While input is not empty◦ If ch is number , push (ch)◦ Else

Pop (a) Pop(b) Eval (ch, a, b)

C:\Documents and Settings\box\My Documents\CS\CSC\220\ReaderPrograms\ReaderFiles\Chap04\Postfix\postfix.java

Page 38: stack & queue

Quick XML Review XML – Wave of the future

Page 39: stack & queue

Another Real world example <?xml version = "1.0"?> <!-- An author --> <author> <name gender = "male"> <first> Art </first> <last> Gittleman </last> </name> </author>

Page 40: stack & queue

THANK YOU