SlideShare a Scribd company logo
Stacks and Queues
CSC220 Data Structure
Winter 2004-5
Abstract Data Type
• Abstract Data Type as a design tool
• Concerns only on the important concept or
model
• No concern on implementation details.
• Stack & Queue is an example of ADT
• An array is not ADT.
What is the
difference?
• Stack & Queue vs. Array
– Arrays are data storage structures while stacks and
queues are specialized DS and used as programmer’s
tools.
• Stack – a container that allows push and pop
• Queue - a container that allows enqueue and
dequeue
• No concern on implementation details.
• In an array any item can be accessed, while in
these data structures access is restricted.
• They are more abstract than arrays.
Questions?
• Array is not ADT
• Is Linked list ADT?
• Is Binary-tree ADT?
• Is Hash table ADT?
• What about graph?
Stacks
• Allows access to only the last item inserted.
• An item is inserted or removed from the stack
from one end called the “top” of the stack.
• This mechanism is called Last-In-First-Out
(LIFO).
A Stack Applet example
Stack operations
• Placing a data item on the top is called
“pushing”, while removing an item from the top is
called “popping” it.
• push and pop are the primary stack operations.
• Some of the applications are : microprocessors,
some older calculators etc.
Example of Stack codes
• First example stack ADT and implementation
C:Documents and SettingsboxMy DocumentsCSCSC220ReaderProgramsReaderFilesCh
• push and pop operations are performed in O(1)
time.
Example of Stack codes
• Reversed word
• What is it?
• ABC -> CBA
C:Documents and SettingsboxMy DocumentsCS
Example of Stack codes
• BracketChecker (balancer)
• A syntax checker (compiler) that understands a
language containing any strings with balanced
brackets ‘{‘ ‘[‘ ‘(‘ and ‘)’, ‘]’, ‘}’
– S -> Bl S1 Br
– S1 -> Bl string Br
– Bl -> ‘{‘ | ‘[‘ | ‘(‘
– Br -> ‘)’, | ‘]’, | ‘}’
C:Documents and SettingsboxMy
DocumentsCSCSC220ReaderProgramsReaderFile
sChap04Bracketsbrackets.java
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.
Circular Queue
• When a new item is inserted at the rear, the
pointer to rear moves upwards.
• Similarly, when an item is deleted from the
queue the front arrow moves downwards.
• After a few insert and delete operations the rear
might reach the end of the queue and no more
items can be inserted although the items from
the front of the queue have been deleted and
there is space in the 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.
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
Queue sample code
• C:Documents and SettingsboxMy Documen
Various Queues
• Normal queue (FIFO)
• Circular Queue (Normal Queue)
• Double-ended Queue (Deque)
• Priority 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?
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
Priority Queue
Example
+Queue()
+insert() : void
+remove() : long
+peekMin() : long
+isEmpty() : bool
+isFull() : bool
-maxSize : int
-queueArray [] : long
-nItems : int
PrioityQ
PriorityQApp
Interface1
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 SettingsboxMy
DocumentsCSCSC220ReaderPrograms
ReaderFilesChap04PriorityQpriorityQ.ja
va
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 - * +
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 SettingsboxMy
DocumentsCSCSC220ReaderProgramsRead
erFilesChap04Postfixpostfix.java
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 SettingsboxMy
DocumentsCSCSC220ReaderProgramsRead
erFilesChap04Postfixpostfix.java
Quick XML Review
• XML – Wave of the future
Another Real world
example
• <?xml version = "1.0"?>
• <!-- An author -->
• <author>
• <name gender = "male">
• <first> Art </first>
• <last> Gittleman </last>
• </name>
• </author>

More Related Content

PPTX
PPT
Fallsem2015 16 cp1699-20-jul-2015_rm01_stacks_and_queues
PPTX
Queues
PPTX
Lecture 1 Introduction C++
PPTX
Ds stack & queue
PPTX
Session 14 - Object Class
PPT
PPTX
Stack Data structure
Fallsem2015 16 cp1699-20-jul-2015_rm01_stacks_and_queues
Queues
Lecture 1 Introduction C++
Ds stack & queue
Session 14 - Object Class
Stack Data structure

What's hot (20)

PPTX
Introduction to HDF5 Data and Programming Models
PDF
Learning R and Teaching R
PPT
Queue in Data Structure
PPT
Queue Data Structure
PDF
TMPA-2017: Static Checking of Array Objects in JavaScript
PPTX
Stack and queue
PDF
Stacks and queues
PPTX
Stack in Sata Structure
PPT
Chapter 6 ds
PPTX
Ppt presentation of queues
PPTX
Session 16 - Collections - Sorting, Comparing Basics
PDF
Queues
PPTX
Stack and Queue by M.Gomathi Lecturer
PDF
All python data_analyst_r_course
PDF
Gems in the python standard library
PPT
Chapter 11 ds
PPTX
Session 20 - Collections - Maps
PDF
The TileDB Array Data Storage Manager - Stavros Papadopoulos, Jake Bolewski
Introduction to HDF5 Data and Programming Models
Learning R and Teaching R
Queue in Data Structure
Queue Data Structure
TMPA-2017: Static Checking of Array Objects in JavaScript
Stack and queue
Stacks and queues
Stack in Sata Structure
Chapter 6 ds
Ppt presentation of queues
Session 16 - Collections - Sorting, Comparing Basics
Queues
Stack and Queue by M.Gomathi Lecturer
All python data_analyst_r_course
Gems in the python standard library
Chapter 11 ds
Session 20 - Collections - Maps
The TileDB Array Data Storage Manager - Stavros Papadopoulos, Jake Bolewski
Ad

Similar to linked list in c++ (20)

PPTX
stack.pptx
PDF
Queue ADT for data structure for computer
PPTX
stack & queue
PPTX
data structures power point presentation
PPTX
2CPP17 - File IO
PPT
Data Structures
PPTX
Stack and Queue......................pptx
PPTX
Stack and queue
PPTX
II B.Sc IT DATA STRUCTURES.pptx
PPTX
Week2-stacks-queues.pptx
PPTX
Learn c++ Programming Language
PPTX
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
PPT
lecture1.ppt
PDF
DSJ_Unit I & II.pdf
PPTX
Data structure and algorithm using java
PDF
Data Structures and Algorithm - Week 3 - Stacks and Queues
PPTX
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
PPTX
CPP17 - File IO
PPTX
Stack and queue power point presentation data structure and algorithms Stack-...
PPT
Data structures
stack.pptx
Queue ADT for data structure for computer
stack & queue
data structures power point presentation
2CPP17 - File IO
Data Structures
Stack and Queue......................pptx
Stack and queue
II B.Sc IT DATA STRUCTURES.pptx
Week2-stacks-queues.pptx
Learn c++ Programming Language
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
lecture1.ppt
DSJ_Unit I & II.pdf
Data structure and algorithm using java
Data Structures and Algorithm - Week 3 - Stacks and Queues
UNIT II LINEAR DATA STRUCTURES – STACKS.pptx
CPP17 - File IO
Stack and queue power point presentation data structure and algorithms Stack-...
Data structures
Ad

Recently uploaded (20)

PPTX
Institutional Correction lecture only . . .
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PPTX
master seminar digital applications in india
PDF
Computing-Curriculum for Schools in Ghana
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Classroom Observation Tools for Teachers
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
Insiders guide to clinical Medicine.pdf
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Sports Quiz easy sports quiz sports quiz
PDF
RMMM.pdf make it easy to upload and study
PDF
Anesthesia in Laparoscopic Surgery in India
Institutional Correction lecture only . . .
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Abdominal Access Techniques with Prof. Dr. R K Mishra
master seminar digital applications in india
Computing-Curriculum for Schools in Ghana
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
102 student loan defaulters named and shamed – Is someone you know on the list?
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
Microbial diseases, their pathogenesis and prophylaxis
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Classroom Observation Tools for Teachers
FourierSeries-QuestionsWithAnswers(Part-A).pdf
O7-L3 Supply Chain Operations - ICLT Program
Insiders guide to clinical Medicine.pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Sports Quiz easy sports quiz sports quiz
RMMM.pdf make it easy to upload and study
Anesthesia in Laparoscopic Surgery in India

linked list in c++

  • 1. Stacks and Queues CSC220 Data Structure Winter 2004-5
  • 2. Abstract Data Type • Abstract Data Type as a design tool • Concerns only on the important concept or model • No concern on implementation details. • Stack & Queue is an example of ADT • An array is not ADT.
  • 3. What is the difference? • Stack & Queue vs. Array – Arrays are data storage structures while stacks and queues are specialized DS and used as programmer’s tools. • Stack – a container that allows push and pop • Queue - a container that allows enqueue and dequeue • No concern on implementation details. • In an array any item can be accessed, while in these data structures access is restricted. • They are more abstract than arrays.
  • 4. Questions? • Array is not ADT • Is Linked list ADT? • Is Binary-tree ADT? • Is Hash table ADT? • What about graph?
  • 5. Stacks • Allows access to only the last item inserted. • An item is inserted or removed from the stack from one end called the “top” of the stack. • This mechanism is called Last-In-First-Out (LIFO). A Stack Applet example
  • 6. Stack operations • Placing a data item on the top is called “pushing”, while removing an item from the top is called “popping” it. • push and pop are the primary stack operations. • Some of the applications are : microprocessors, some older calculators etc.
  • 7. Example of Stack codes • First example stack ADT and implementation C:Documents and SettingsboxMy DocumentsCSCSC220ReaderProgramsReaderFilesCh • push and pop operations are performed in O(1) time.
  • 8. Example of Stack codes • Reversed word • What is it? • ABC -> CBA C:Documents and SettingsboxMy DocumentsCS
  • 9. Example of Stack codes • BracketChecker (balancer) • A syntax checker (compiler) that understands a language containing any strings with balanced brackets ‘{‘ ‘[‘ ‘(‘ and ‘)’, ‘]’, ‘}’ – S -> Bl S1 Br – S1 -> Bl string Br – Bl -> ‘{‘ | ‘[‘ | ‘(‘ – Br -> ‘)’, | ‘]’, | ‘}’ C:Documents and SettingsboxMy DocumentsCSCSC220ReaderProgramsReaderFile sChap04Bracketsbrackets.java
  • 10. 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.
  • 11. Circular Queue • When a new item is inserted at the rear, the pointer to rear moves upwards. • Similarly, when an item is deleted from the queue the front arrow moves downwards. • After a few insert and delete operations the rear might reach the end of the queue and no more items can be inserted although the items from the front of the queue have been deleted and there is space in the queue.
  • 12. 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.
  • 13. 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
  • 14. Queue sample code • C:Documents and SettingsboxMy Documen
  • 15. Various Queues • Normal queue (FIFO) • Circular Queue (Normal Queue) • Double-ended Queue (Deque) • Priority Queue
  • 16. 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?
  • 17. 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
  • 18. Priority Queue Example +Queue() +insert() : void +remove() : long +peekMin() : long +isEmpty() : bool +isFull() : bool -maxSize : int -queueArray [] : long -nItems : int PrioityQ PriorityQApp Interface1
  • 19. 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 SettingsboxMy DocumentsCSCSC220ReaderPrograms ReaderFilesChap04PriorityQpriorityQ.ja va
  • 20. 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 - * +
  • 21. 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 SettingsboxMy DocumentsCSCSC220ReaderProgramsRead erFilesChap04Postfixpostfix.java
  • 22. 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 SettingsboxMy DocumentsCSCSC220ReaderProgramsRead erFilesChap04Postfixpostfix.java
  • 23. Quick XML Review • XML – Wave of the future
  • 24. Another Real world example • <?xml version = "1.0"?> • <!-- An author --> • <author> • <name gender = "male"> • <first> Art </first> • <last> Gittleman </last> • </name> • </author>