KEMBAR78
Data Structure and Algorithms Queues | PPT
 Queses:
 Array and list representation,
 Operations (traversal, insertion and deletion)
 Priority queues and Deques:
 Array and List representations
Definition of Queue
A Queue is an ordered collection of items from which
items may be deleted at one end (called the front of the
queue) and into which items may be inserted at the other
end (the rear of the queue).
The first element inserted into the queue is the first
element to be removed. For this reason a queue is
sometimes called a FIFO (first-in first-out) list as opposed
to the stack, which is a LIFO (last-in first-out).
Queue
items[MAXQUEUE-
1]
. .
. .
. .
items[2] C
items[1] B
items[0] A Front=0
Rear=2
Insert an item A
A new item (A) is inserted at the Rear of the queue
items[MAXQUEUE
-1]
. .
. .
items[3]
items[2]
items[1]
items[0] A Front=0,
Rear=0
Insert an item B
A new item (B) is inserted at the Rear of the queue
items[MAXQUEUE
-1]
. .
. .
items[3]
items[2]
items[1] B Rear=1
items[0] A Front=0
Insert an item C
A new item (C) is inserted at the Rear of the queue
items[MAXQUEUE
-1]
. .
. .
items[3]
items[2] C Rear=2
items[1] B
items[0] A Front=0
Insert an item D
A new item (D) is inserted at the Rear of the
queue
items[MAXQUEUE-
1]
. .
. .
items[3] D Rear=3
items[2] C
items[1] B
items[0] A Front=0
Insert Operation(Array)
QINSERT(QUEUE, N, FRONT, REAR, ITEM)
1. If FRONT = 1 and REAR = N, or FRONT = REAR + 1, then :
write OVERFLOW, and Return.
2. If FRONT = NULL, then:
Set FRONT := 1 and REAR := 1.
Else if REAR = N, then:
Set REAR := 1.
Else :
Set REAR := REAR + 1.
3. Set QUEUE[REAR]:= ITEM.
4. Return.
Delete A
An item (A) is deleted from the Front of the queue
items[MAXQUEUE-1]
. .
. .
items[3] D Rear=3
items[2] C
items[1] B Front=1
items[0] A
Delete B
An item (B) is deleted from the Front of the
queue.
items[MAXQUEUE-1]
. .
. .
items[3] D Rear=3
items[2] C Front=2
items[1] B
items[0] A
Delete C
An item (C) is deleted from the Front of the
queue
items[MAXQUEUE-1]
. .
. .
items[3] D Front=Rear=3
items[2] C
items[1] B
items[0] A
Delete D
An item (A) is deleted from the Front of the
queue.
items[MAXQUEUE-1]
. .
items[3] D Front=Rear=-1
items[2] C
items[1] B
items[0] A
Delete Operation(Array)
QDELETE(QUEUE, N, FRONT, REAR, ITEM)
1. If FRONT = NULL then :
write: UNDERFLOW, and Return.
2. Set ITEM := QUEUE[FRONT].
3. If FRONT = REAR,
Set FRONT := NULL and REAR := NULL
Else if FRONT = N, then:
Set FRONT := 1.
Else :
Set FRONT := FRONT + 1.
4. Return.
Insert Operation(LL)
LINKQ_INSERT(INFO, LINK, FRONT, REAR, AVAIL, ITEM)
1. If AVAIL = NULL, then :
write OVERFLOW, and Exit.
2. Set NEW := AVAIL and AVAIL := LINK[AVAIL]
3. Set INFO[NEW]:= ITEM and LINK[NEW]=NULL
4. If (FRONT = NULL), FRONT := REAR := NEW
Else set LINK[REAR] := NEW and REAR := NEW
5. Exit
Delete Operation(LL)
LINKQ_DELETE(INFO, LINK, FRONT, REAR, AVAIL,
ITEM)
1. If FRONT = NULL, then :
write UNDERFLOW, and Exit.
2. Set TEMP := FRONT
3. Set ITEM :=INFO[TEMP]
4. FRONT :=LINK[TEMP]
5. LINK[TEMP] = AVAIL and AVAIL = TEMP
6. Exit
Priority Queue
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.
Deques
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)
Thank You

Data Structure and Algorithms Queues

  • 1.
     Queses:  Arrayand list representation,  Operations (traversal, insertion and deletion)  Priority queues and Deques:  Array and List representations
  • 2.
    Definition of Queue AQueue is an ordered collection of items from which items may be deleted at one end (called the front of the queue) and into which items may be inserted at the other end (the rear of the queue). The first element inserted into the queue is the first element to be removed. For this reason a queue is sometimes called a FIFO (first-in first-out) list as opposed to the stack, which is a LIFO (last-in first-out).
  • 3.
    Queue items[MAXQUEUE- 1] . . . . .. items[2] C items[1] B items[0] A Front=0 Rear=2
  • 4.
    Insert an itemA A new item (A) is inserted at the Rear of the queue items[MAXQUEUE -1] . . . . items[3] items[2] items[1] items[0] A Front=0, Rear=0
  • 5.
    Insert an itemB A new item (B) is inserted at the Rear of the queue items[MAXQUEUE -1] . . . . items[3] items[2] items[1] B Rear=1 items[0] A Front=0
  • 6.
    Insert an itemC A new item (C) is inserted at the Rear of the queue items[MAXQUEUE -1] . . . . items[3] items[2] C Rear=2 items[1] B items[0] A Front=0
  • 7.
    Insert an itemD A new item (D) is inserted at the Rear of the queue items[MAXQUEUE- 1] . . . . items[3] D Rear=3 items[2] C items[1] B items[0] A Front=0
  • 8.
    Insert Operation(Array) QINSERT(QUEUE, N,FRONT, REAR, ITEM) 1. If FRONT = 1 and REAR = N, or FRONT = REAR + 1, then : write OVERFLOW, and Return. 2. If FRONT = NULL, then: Set FRONT := 1 and REAR := 1. Else if REAR = N, then: Set REAR := 1. Else : Set REAR := REAR + 1. 3. Set QUEUE[REAR]:= ITEM. 4. Return.
  • 9.
    Delete A An item(A) is deleted from the Front of the queue items[MAXQUEUE-1] . . . . items[3] D Rear=3 items[2] C items[1] B Front=1 items[0] A
  • 10.
    Delete B An item(B) is deleted from the Front of the queue. items[MAXQUEUE-1] . . . . items[3] D Rear=3 items[2] C Front=2 items[1] B items[0] A
  • 11.
    Delete C An item(C) is deleted from the Front of the queue items[MAXQUEUE-1] . . . . items[3] D Front=Rear=3 items[2] C items[1] B items[0] A
  • 12.
    Delete D An item(A) is deleted from the Front of the queue. items[MAXQUEUE-1] . . items[3] D Front=Rear=-1 items[2] C items[1] B items[0] A
  • 13.
    Delete Operation(Array) QDELETE(QUEUE, N,FRONT, REAR, ITEM) 1. If FRONT = NULL then : write: UNDERFLOW, and Return. 2. Set ITEM := QUEUE[FRONT]. 3. If FRONT = REAR, Set FRONT := NULL and REAR := NULL Else if FRONT = N, then: Set FRONT := 1. Else : Set FRONT := FRONT + 1. 4. Return.
  • 14.
    Insert Operation(LL) LINKQ_INSERT(INFO, LINK,FRONT, REAR, AVAIL, ITEM) 1. If AVAIL = NULL, then : write OVERFLOW, and Exit. 2. Set NEW := AVAIL and AVAIL := LINK[AVAIL] 3. Set INFO[NEW]:= ITEM and LINK[NEW]=NULL 4. If (FRONT = NULL), FRONT := REAR := NEW Else set LINK[REAR] := NEW and REAR := NEW 5. Exit
  • 15.
    Delete Operation(LL) LINKQ_DELETE(INFO, LINK,FRONT, REAR, AVAIL, ITEM) 1. If FRONT = NULL, then : write UNDERFLOW, and Exit. 2. Set TEMP := FRONT 3. Set ITEM :=INFO[TEMP] 4. FRONT :=LINK[TEMP] 5. LINK[TEMP] = AVAIL and AVAIL = TEMP 6. Exit
  • 16.
    Priority Queue More specializeddata 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.
  • 17.
    Deques It is adouble-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)
  • 18.