280 likes | 465 Vues
Stacks and Queues. Stacks and Queues. Not really “data structures” More of an enforcement of policy Can be implemented using an array or linked list Can store just about any kind of data Queues First In, First Out (FIFO) Like waiting in line Stacks First In, Last Out (FILO)
E N D
Stacks and Queues • Not really “data structures” • More of an enforcement of policy • Can be implemented using an array or linked list • Can store just about any kind of data • Queues • First In, First Out (FIFO) • Like waiting in line • Stacks • First In, Last Out (FILO) • Like a stack of trays
Stacks • Three primary operations • Push() – put new data on the top of the stack • Pop() – remove data from the top of the stack • Peek() – get a copy of the data on the top of the stack • Useful • our function stack! • stack of cards, tiles, loot, etc…
Example(pushing) 5 Note: could use a linked list also
Example(pushing) 11 5
Example(pushing) -6 11 5
Example(pushing) 45 -6 11 5
Example(current stack) 45 -6 11 5
Example(peeking) 45 45 -6 11 5
Example(popping) 45 -6 11 5
Example(pushing) 31 -6 11 5
Example(popping) 31 -6 11 5
Example(popping) -6 11 5
Example(popping) 11 5
Example(popping) FILO 5
Queues • Two primary operations • Enqueue() – put new data at the end of the queue • Dequeue() – remove data from the beginning of the queue • Peek() – yes, it’s still there… • Useful • Enforcing fairness (waitlist at SPSU) • Player turns during a round
Example 5
Example 5 11
Example(enqueue a -6) -6 5 11
Example 5 11 -6
Example(dequeue) 5 11 -6
Example(dequeue) 5 11 -6
Example(dequeue) 11 5 -6 FIFO
Example(dequeue) 11 -6
Summary • Not really “data structures” • More of an enforcement of policy • Can be implemented using an array or linked list • Queues are FIFO • Stacks are FILO • Which data structure is LILO? • Which one is LIFO?