SlideShare a Scribd company logo
QUEUE
Course Objectives


At the end of the lesson students are expected to be able
  to:

• Understand queue concepts and applications.

• Understand queue structure and operations that can be
  done on queue.

• Understand and know how to implement queue using
  array and linked list : linear array, circular array, linear
  link list and circular list.
1.0 Introduction to Queue
Introduction to Queue


• New items enter at the back, or rear, of the

  queue

• Items leave from the front of the queue

• First-in, first-out (FIFO) property

   – The first item inserted into a queue is the

     first item to leave

   – Middle elements are logically inaccessible
Introduction to Queue


• Important in simulation & analyzing the

  behavior of complex systems
Queue Applications


• Real-World Applications
  – Cashier lines in any store

  – Check out at a bookstore

  – Bank / ATM

  – Call an airline
Queue Applications


• Computer Science Applications
  – Print lines of a document

  – Printer sharing between computers

  – Recognizing palindromes

  – Shared resource usage (CPU, memory
    access, …)
Queue Applications


•    Simulation
    – A study to see how to reduce the wait
      involved in an application
Queue implementation


Remove/                                    Add/
                  A       B     C          Enqueue
Dequeue

             Front/Head       Back/Rear


  Basic Structure of a Queue:
     •Data structure that hold the queue
     •head
     •rear
Queue implementation


                                                        Add/
                   A          B       C          D      Enqueue


                 Head                            Rear


  Insert D into Queue (enQueue) : D is inserted at rear
Remove/
Dequeue   A             B         C       D


                       Head               Rear

      Delete from Queue (deQueue) : A is removed
Queue operations
•   Queue operations
    – Create an empty queue

    – Destroy a queue

    – Determine whether a queue is full

    – Add a new item to the queue (enQueue)

    – Determine whether a queue is empty

    – Remove the item that was added earliest(deQueue)

    – Retrieve at Front(getFront)

    – Retrieve at Back the item that was added
      earliest(getRear)
Queue Implementation


Implementation:
 – Array-based (Linear or Circular)
 – Pointer-based : Link list (Linear or
   Circular)
2.0 Queue Implementation Using
        Array(Linear)
Queue Implementation Using
Array(Linear)
• Number of elements in Queue are fixed
  during declaration.
• Need isFull() operation to determine
  whether a queue is full or not.
Queue Implementation Using
  Array(Linear)

• Queue structure need at least 3 elements:

1) Element to store items in Queue

2) Element to store index at head

3) Element to store index at rear
Create Queue Operation

     • Declare

        – front & back are indexes in the array

        – Initial condition: front =0 & back = -1

        – Size of an array in queue
                          Queue
 0         0       1        2       3    Max size    -1
front                                               back
Create Queue operation
Example Code 1


#include <iostream>
using namespace std;
#define max 5


int front = 0, back = -1;
                                Create Queue
char item[max], newitem;

                                            item

                  0              0      1          2   3   4    -1
                front                                          back


             Front refer to index 0


                                                                 Continue…
enQueue operation
void enQueue(){
         cout<<"nt#################n";
         cout<<"nt1. enQueuen";
         //check queue is full
         if(back == max - 1){
                   cout<<"ntQueue Is Full, Cannot Add Item In Queuen";
         }else{
                   cout<<"nttEnter Item:";
                   cin>>newitem;
                   back++;
                   item[back]=newitem;
                   cout<<endl;                enQueue
         }
}                                                item                     back++
                     0              0           1        2     3   4        0
                   front            A                                     back
                                                                       back = -1+1
                                                                       back = 0
           Front refer to index 0       From back/rear
                                        item[back] = newitem

                                                                           Continue…
enQueue operation
                                          item                 back++

     0              0      1          2          3       4        1
   front            A      B                                    back

                                                               back = 0 +1
                                                               back = 1
Front refer to index 0         From back/rear
                               item[back] = newitem

                                          item                   back++

    0               0      1          2          3       4         2

  front             A      B          C                          back

                                                                back = 1 +1
Front refer to index 0                                          back = 2
                                        From back/rear
                                        item[back] = newitem




                                                                             Continue…
enQueue operation

                                      item                          back++
     0              0      1          2      3          4                   3
   front            A      B      C          D                      back

                                                                   back = 2 +1
                                                                   back = 3
Front refer to index 0
                                                 From back/rear
                                                 item[back] = newitem


                               item                               back++
     0              0      1          2      3          4               4
   front            A      B      C          D         E           back

                                                                back = 3 +1
                                                                back = 4
Front refer to index 0
                                                     From back/rear
                                                     item[back] = newitem



                                                                                 Continue…
deQueue operation
     void deQueue(){
              cout<<"nt#################n";
              cout<<"nt2.deQueuen";
              if(back < front){
                         cout<<"ntThere is no data to remove from queuen";
              }else{
                         char itemdeleted;
                         itemdeleted=item[front];     deQueue
                         item[front] = NULL;
                         cout<<"ntItem Remove From Queue:"<<itemdeleted<<endl;
                         front++;

                 }
                 cout<<endl;                                 item
     }                       0              0            1    2     3   4          4
                            front           A            B    C     D   E     back

                                                                             back = 3 + 1
itemdeleted = item[front]    Front refer to index 0                          back = 4
front = 0

                                    From front/head
                                    item[front] = NULL                       Continue…
deQueue operation
             front++                               item
              1               0           1          2         3       4          4
             front          NULL          B          C         D       E        back
        front = 0 +                                                            back = 3 + 1
        1                                                                      back = 4
        front = 1
               Front refer to index 1
                                                    item
             1                 0           1          2        3       4           4
            front           NULL           B         C         D       E         back

                                                                               back = 3 + 1
             Front refer to index 1                                            back = 4

itemdeleted = item[front]
                                       From front/head
front = 1
                                       item[front] = NULL
            front++                                     item
             2                     0           1          2        3       4           4
            front             NULL         NULL           C        D       E          back
       front = 1 +                                                                back = 3 + 1
       1                                                                          back = 4
       front = 2
                     Front refer to index 2                                                   Continue…
deQueue operation

                                                    item
             2                 0          1           2          3       4          4
            front           NULL       NULL           C          D       E        back

                                                                                 back = 3 + 1
                     Front refer to index 2                                      back = 4


                                                  From front/head
itemdeleted = item[front]                         item[front] = NULL
front = 2

           front++                                        item
             3                     0          1           2          3       4          4
            front             NULL       NULL        NULL            D       E       back
       front = 2 +                                                                 back = 3 + 1
       1                                                                           back = 4
       front = 3
                     Front refer to index 3

                                                                                                  Continue…
deQueue operation
                                                 item
            3                0          1         2            3         4          4
          front           NULL       NULL       NULL           D         E        back

                                                                                 back = 3 + 1
                   Front refer to index 3                                        back = 4


itemdeleted = item[front]                                  From front/head
front = 3                                                  item[front] = NULL


         front++                                       item
            4                    0          1          2           3         4          4
          front             NULL       NULL       NULL         NULL          E       back
     front = 3 +                                                                   back = 3 + 1
     1                                                                             back = 4
     front = 4

                              Front refer to index 4



                                                                                                  Continue…
deQueue operation
                                                item
            4                0          1        2           3             4              4
          front           NULL       NULL       NULL        NULL           E         back

                                                                                    back = 3 + 1
                   Front refer to index 4                                           back = 4


itemdeleted = item[front]                                            From front/head
front = 4                                                            item[front] = NULL


         front++                                     item
            5                    0          1        2           3             4              4
          front             NULL       NULL      NULL        NULL         NULL            back
     front = 4 +                                                                      back = 3 + 1
     1                                                                                back = 4
     front = 5




                                                                                                     Continue…
Retrieve at front(getFront) operation

void getFront(){
          cout<<"nt#################n";
          cout<<"nt3.getFrontn";
          if(back < front){
                     cout<<"ntThere is no data to at frontn";
          }else{
                     cout<<"ntItem At Front:"<<item[front]<<endl;

          }
}




                                                                      Continue…
Retrieve at back(getRear) operation

void getRear(){
          cout<<"nt#################n";
          cout<<"nt4.getRearn";
          if(back < front){
                     cout<<"ntThere is no data to at rearn";
          }else{
                     cout<<"ntItem At Rear:"<<item[back]<<endl;

          }
}




                                                                    Continue…
destroyQueue operation

void destroyQueue(){

         delete [] item;

}




                                                Continue…
displayQueue operation

void displayQueue(){
           cout<<"ntDisplay Item In Queuen";
           if(back < front){
                      cout<<"ntThere is no data in queue to be displayedn";
           }else{
                      cout<<"t";
                      for(int i=0; i < max; i++ ){
                                  cout<<"t"<<item[i];
                      }
                      cout<<endl;
           }

}




                                                                                 Continue…
Queue Implementation Using Array(Linear)
int main()
{
int selection;
menu:
            cout<<"nPlease Choose Your Selectionn";
            cout<<"n1tenQueuen";
            cout<<"n2tdeQueuen";
            cout<<"n3tGetFrontn";
            cout<<"n4tGetRearn";
            cout<<"n5tDestroyQueuen";
            cout<<"n6tDisplayn";
            cout<<"ntSelection is:";
            cin>>selection;




                                                        Continue…
Queue Implementation Using Array(Linear)

switch(selection){
                     case 1:   enQueue();
                               displayQueue();
                               goto menu;
                               break;

                     case 2:   deQueue();
                               displayQueue();
                               goto menu;
                               break;

                     case 3:   getFront();
                               displayQueue();
                               goto menu;
                               break;




                                                 Continue…
Queue Implementation Using Array(Linear)

                case 4:             getRear();
                                    displayQueue();
                                    goto menu;
                                    break;

                case 5:             destroyQueue();
                                    displayQueue();
                                    goto menu;
                                    break;

                case 6:             displayQueue();
                                    goto menu;
                                    break;

                default:cout<<"ntWrong Selectionn";
            }
return 0;
}
Queue Implementation Using Array(Linear)

• Problem: Rightward-Drifting:

              • After a sequence of additions & removals,
               items will drift towards the end of the array
              • enQueue operation cannot be performed
               on the queue below, since back = max – 1.
   front++                        item
      5             0      1      2       3      4        4
    front          NULL   NULL   NULL    NULL   NULL    back
front = 4 +                                            back = 3 + 1
1                                                      back = 4
front = 5
Queue Implementation Using Array(Linear)

• Rightward drifting solutions
   – Shift array elements after each deletion
      • Shifting dominates the cost of the
        implementation
Queue Implementation Using Array(Linear)

 – Use a circular array: When Front or Back
   reach the end of the array, wrap them around
   to the beginning of the array
    • Problem:
       – Front & Back can't be used to
         distinguish between queue-full & queue-
         empty conditions
Queue Implementation Using Array(Linear)

    • Solution:
       – Use a counter
       – Count == 0 means empty queue
       – Count == MAX_QUEUE means full
         queue
3.0 Queue Implementation Using
        Array(Circular)
Queue Implementation Using
Array(Circular)
• Number of elements in Queue are fixed
  during declaration.
• Need isFull() operation to determine
  whether a queue is full or not.
Queue Implementation Using
  Array(Circular)

• Queue structure need at least 3 elements:

1) Element to store items in Queue

2) Element to store index at head

3) Element to store index at rear

4) Element to store index in counter
Create Queue Operation
• Declare

  – front & back are indexes in the array

  – count to store index

  – Initial condition: front =0 , back = -1, count = 0

  – Size of an array in queue
Queue Implementation Using Array(Circular)


 – The Wrap-around effect is obtained by using
   modulo arithmetic (%-operator)
                                          front = 0


                      7             0


                  6                        1




                  5                         2


                          4         3

                              back = -1         count = 0
Queue Implementation Using Array(Circular)

 – enQueue
    • Increment back, using modulo arithmetic
    • Insert item
    • Increment count
 – deQueue
    • Increment front using modulo arithmetic
    • Decrement count
 – Disadvantage
       • Overhead of maintaining a counter or
         flag
Queue Implementation Using Array(Circular)

Example Code 2:
                                                   queue
#include <iostream>                                             front = 0

using namespace std;                       7               0

                                       6                        1
#define max 8

char queue[max], newitem;
                                       5                        2
int front = 0, back = -1, count = 0;
                                               4           3

                                                    back = -1       count = 0




                                                                            Continue…
Queue Implementation Using Array(Circular)
void enQueue(){

cout<<"nt#### enQueue Circular ####n";

   if(count == max){

            cout<<"ntQueue Circular Is Full!!!n";

   }else{

   cout<<"ntfront:"<<front<<"t"<<"back:"<<back<<"tcount:"<<count<<“tmax:”<<max<<"n";

            cout<<"ntEnter Item:";                                                     front = 0

                                                                         7           0        back = 0
            cin>>newitem;
                                                                                 A
            back = (back + 1)% max;                                 6                     1
                                           back = (-1 + 1) % 8
                                           back = 0 % 8
            queue[back] = newitem;
                                           back = 0                  5                    2
            count++;            0          queue[0] = A
                             8√ 0                                            4       3
            } }                            count = 0 + 1
                                 0         count = 1
                                                                 count = 1
                                 0                                                       Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 0, count = 1           queue
                                                                              front = 0

                                                          7           0
                                                                  A                       back = 1
                                                      6                       1
                        back = (0 + 1) % 8                                B
                        back = 1 % 8
                        back = 1                      5                        2
             0          queue[1] = B
          8√ 1                                                4       3
                        count = 1 + 1
              0         count = 2
              1                              count = 2




                                                                                               Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 1, count = 2

                                                              queue           front = 0

                                                          7           0
                                                                  A
                                                      6                       1
                         back = (1 + 1) % 8                           B
                         back = 2 % 8
                                                                          C
                         back = 2                     5                        2          back = 2
              0          queue[2] = C
           8√ 2                                               4       3
                         count = 2 + 1
               0         count = 3
               2                              count = 3




                                                                                              Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 2, count = 3
                                                           queue
                                                                               front = 0

                                                           7           0
                                                                   A
                                                       6                       1
                           back = (2 + 1) % 8                          B
                           back = 3 % 8
                           back = 3                                        C
                                                       5                        2
               0           queue[3] = D                            D
            8√ 3                                               4       3
                           count = 3 + 1
                 0         count = 4
                 3                         count = 4                       back = 3




                                                                                           Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 3, count = 4
                                                           queue
                                                                               front = 0

                                                           7           0
                                                                   A
                                                       6                       1
                           back = (3 + 1) % 8                          B
                           back = 4 % 8
                           back = 4                                        C
                                                       5                        2
               0           queue[4] = E                        E   D
            8√ 4                                               4       3
                           count = 4 + 1
                 0         count = 5
                 4                         count = 5           back = 4




                                                                                           Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 4, count = 5
                                                                queue
                                                                                    front = 0

                                                            7               0
                                                                        A
                                                       6                            1
                           back = (4 + 1) % 8                               B
                           back = 5 % 8
                           back = 5                         F                   C
                                                       5                             2
               0           queue[5] = F                           E     D
            8√ 5                                 back = 5        4          3
                           count = 5 + 1
                 0         count = 6
                 5                         count = 6




                                                                                                Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 5, count = 6
                                                               queue
                                                                                   front = 0
                                           back = 6        7               0
                                                                       A
                                                       6                           1
                           back = (5 + 1) % 8              G               B
                           back = 6 % 8
                           back = 6                        F                   C
                                                       5                            2
               0           queue[6] = G                          E     D
            8√ 6                                                4          3
                           count = 6 + 1
                 0         count = 7
                 6                         count = 7




                                                                                               Continue…
enQueue Implementation Using Array(Circular)
From previous slide: front = 0, back = 6, count = 7
                                                               queue
                                                back = 7                           front = 0

                                                           7               0
                                                                H      A
                                                       6                           1
                           back = (6 + 1) % 8              G               B
                           back = 7 % 8
                           back = 7                        F                   C
                                                       5                            2
               0           queue[7] = H                          E     D
            8√ 7                                                4          3
                           count = 7 + 1
                 0         count = 8
                 7                         count = 8




                                                                                               Continue…
deQueue Implementation Using Array(Circular)
void deQueue(){

cout<<"nt#### deQueue Circular ####n";

    if(count == 0){

             cout<<"ntQueue Circular Is Empty, No Data To Be Deleted!!!n";

    }else{                                                                   queue
                                                              back = 7
             queue[front] = NULL;
                                                                         7               0
             front=(front + 1) % max;                                         H                      front = 1
                                                                    6                            1
             count--;                   queue[0] = NULL                  G               B
                                        front = (0 + 1) % 8
                                        front = 1 % 8                    F                   C
    }                                                               5                            2
                           0            front = 1                              E     D
}                       8√ 1                                                  4          3
                                        count = 8 - 1
                           0            count = 7
                           1                            count = 7


                                                                                                 Continue…
deQueue Implementation Using Array(Circular)
From previous slide: front = 1, back = 7 , count = 7



                                                               queue
                                              back = 7

                                                           7               0
                                                                H
                                                    6                              1
                        queue[1] = NULL                    G
                        front = (1 + 1) % 8
                        front = 2% 8                       F                   C
                                                       5                           2
            0           front = 2                                E     D               front = 2
         8√ 2                                                   4          3
                        count = 7 - 1
             0          count = 6
             2                          count = 6




                                                                                                   Continue…
Queue Implementation Using Array(Circular)
void displayQueue(){

cout<<"nt#### Display Queue Circular ####n";

cout<<"ntfront:"<<front<<"t"<<"back:"<<back<<"tcount:"<<count<<“tmax:”<<max<<"n";

    if(count == 0){

             cout<<"ntQueue Circular Is Empty, No Data To Be Displayn";

    }else{

             cout<<"ntItem In Queue Circularn";

             for(int i = 0; i < max; i++){

             cout<<"t"<<queue[i];

    }

    }

}

                                                                             Continue…
Queue Implementation Using Array(Circular)
int main(){

int selection;

menu:

    cout<<"nnPlease Choose Your Selectionn";

    cout<<"n1tenQueue Circularn";

    cout<<"n2tdeQueue Circularn";

    cout<<"n3tDisplay Queuen";

    cout<<"ntSelection is:";

    cin>>selection;




                                                  Continue…
Queue Implementation Using Array(Circular)
switch(selection){

   case 1:           enQueue();

                     displayQueue();

                     goto menu;

                     break;

   case 2:           deQueue();

                     displayQueue();

                     goto menu;

                     break;

   case 3:           displayQueue();

                     goto menu;

                     break;

                                              Continue…
Queue Implementation Using Array(Circular)
default:cout<<"ntWrong Selectionn";

    }

return 0;

}
4.0 Queue Implementation Using
      Linked List(Linear)
Queue Implementation Using Linked List(Linear)
Pointer-Based Implementation
• More straightforward than array-based
• Need Two external pointer (Front & Back) which front to
  trace deQueue operation and back to trace deQueue
  operation.
Create Queue Implementation Using Linked
                                  List(Linear)
Example Code 1:

#include <iostream>

using namespace std;

struct nodeQueue{

     char name;

     int age;              name         age         next

     nodeQueue *next;
                        Compiler get the initial illustrated structure of node
};




                                                                                 Continue…
Create Queue Implementation Using Linked
                              List(Linear)
nodeQueue *back_ptr = NULL;         NULL

nodeQueue *front_ptr=NULL;         back_ptr


                                    NULL

                                    front_ptr




                                                Continue…
enQueue Implementation Using Linked
                                  List(Linear)
void enQueue(){
                                                       0110
//create new node
                                       0110      Ali    29    NULL
   nodeQueue *newnode;
                                       newnode
   newnode = new nodeQueue;

cout<<"nt####enQueue####n";

//assign data field for name and age

   cout<<"Enter Name:";

   cin>>newnode->name;

   cout<<"Enter Age:";

   cin>>newnode->age;

   newnode->next = NULL;


                                                              Continue…
enQueue Implementation Using Linked
                                  List(Linear)
//insert newnode into queue                          Insertion to an empty queue
//check whether queue is empty

if((front_ptr == NULL) && (back_ptr == NULL)){                   0110

    front_ptr = newnode;                0110        Ali          29         NULL

    back_ptr = newnode;                newnode            name   age               next

}else{                                   0110
                                                                             0110
    back_ptr->next = newnode;           front_ptr
                                                                           back_ptr
    back_ptr = newnode;

}




                                                                           Continue…
enQueue Implementation Using Linked

Insertion to a non empty queue
                                 List(Linear)
                                 0111

    0111              Tina        30         NULL

   newnode             name       age         next

                                  0110


     0110               Ali        29        NULL     0110

    front_ptr                                        back_ptr
                      name         age        next


                         back_ptr->next = newnode;
                         back_ptr=newnode;




                                                                Continue…
enQueue Implementation Using Linked
                                         List(Linear)
        Insertion to a non empty queue

                                0110                     0111

 0110                Ali        29       0111     Tina    30    NULL        0111

front_ptr                                                                 back_ptr
                   name         age       next    name    age    next




                                                                        Continue…
deQueue Implementation Using Linked List(Linear)




                                          Continue…
void deQueue(){

         cout<<"nt####deQueue####n";

         //check whether queue is empty

         if((front_ptr == NULL) && (back_ptr == NULL)){

                  cout<<"ntQueue Is Empty!!!n";

         }else{

                  nodeQueue *temp;

                  temp = front_ptr;

                  if(front_ptr->next == NULL){

                            front_ptr = NULL;

                            back_ptr = NULL;         If the queue contains one item only

                            delete temp;

                  }else{

                            front_ptr = front_ptr->next;

                            delete temp; } } }

                                                                                Continue…
deQueue Implementation Using Linked List(Linear)
 If the queue contains one item only to be deleted

  nodeQueue *temp;
  temp = front_ptr;

                                        0110

     0110                  Ali          29           NULL     0110
   front_ptr                                                back_ptr
                                 name   age          next

     0110
                      if(front_ptr->next == NULL){
     temp
                      front_ptr = NULL;         NULL         NULL
                      back_ptr = NULL;         front_ptr    back_ptr
                      delete temp;
                      }else{
                      …}


                                                                       Continue…
deQueue Implementation Using Linked
                                    List(Linear)
   If the queue contains more than one item

    nodeQueue *temp;
    temp = front_ptr;
                            0110                     0111
  0110             Ali      29       0111     Tina    30    NULL      0111
front_ptr        name        age       next   name    age    next   back_ptr

  0110
  temp




                                                                    Continue…
…}else{
front_ptr = front_ptr->next;
delete temp; }

                                 0110                      0111
   0111              Ali          29    0111       Tina     30       NULL         0111
front_ptr         name            age    next       name    age          next   back_ptr

   0110
   temp

                                        0111
    0111                   Tina         30      NULL              0111
  front_ptr                    name      age     next       back_ptr




                                                                                Continue…
displayQueue Implementation Using Linked
                        List(Linear)
void displayQueue(){
cout<<"nt####Display Queue####n";
if((front_ptr == NULL) && (back_ptr == NULL)){
         cout<<"ntQueue Is Empty!!!n";
         cout<<"ntfront_ptr :"<<front_ptr<<"tback_ptr :"<<back_ptr<<endl;
}else{
         nodeQueue *cursor;
         cursor=front_ptr;
         cout<<"ntThe Elements In Queue Aren";
         cout<<"ntfront_ptr :"<<front_ptr<<"tback_ptr :"<<back_ptr<<endl;
         int node=1;
         while(cursor){
         cout<<"ntNode :"<<node++<<"tName :"<<cursor->name<<"tAge :"<<cursor-
>age<<"tcursor-next:"<<cursor->next<<endl;
         cursor=cursor->next; } }                                              Continue…
Queue Implementation Using Linked List(Linear)

int main()
{
int selection;
menu:
             cout<<"nnMenu Selectionn";
             cout<<"n1tenQueuen";
             cout<<"n2tdeQueuen";
             cout<<"n3tDisplay Queuen";
             cout<<"ntSelection is:";
             cin>>selection;




                                              Continue…
Queue Implementation Using Linked List(Linear)
    switch(selection){
              case 1:     enQueue();
                          displayQueue();
                          goto menu;
                          break;
              case 2:     deQueue();
                          displayQueue();
                          goto menu;
                          break;
              case 3:     displayQueue();
                          goto menu;
                          break;
              default:cout<<"ntWrong Selectionn";   }
              return 0;
                          }
                                                           Continue…

More Related Content

What's hot (20)

PPTX
queue & its applications
somendra kumar
 
PPTX
Tree traversal techniques
Syed Zaid Irshad
 
PPTX
Circular Queue data structure
Dhananjaysinh Jhala
 
PDF
Dsa circular queue
zzzubair
 
PPTX
Priority Queue in Data Structure
Meghaj Mallick
 
PPTX
linked list in Data Structure, Simple and Easy Tutorial
Afzal Badshah
 
PPTX
Introduction to stack
vaibhav2910
 
PPTX
Queue Implementation Using Array & Linked List
PTCL
 
PDF
Binary tree
Rajendran
 
PPTX
Binary Search Tree in Data Structure
Dharita Chokshi
 
PPT
Graphs bfs dfs
Jaya Gautam
 
PPTX
stack & queue
manju rani
 
PPTX
Queue in Data Structure
Janki Shah
 
PPT
Stack a Data Structure
ForwardBlog Enewzletter
 
PPSX
Data Structure (Queue)
Adam Mukharil Bachtiar
 
PDF
sparse matrix in data structure
MAHALAKSHMI P
 
PPTX
Data structure by Digvijay
Digvijay Singh Karakoti
 
PPTX
Insertion sort algorithm power point presentation
University of Science and Technology Chitttagong
 
PPTX
Presentation on queue
Rojan Pariyar
 
queue & its applications
somendra kumar
 
Tree traversal techniques
Syed Zaid Irshad
 
Circular Queue data structure
Dhananjaysinh Jhala
 
Dsa circular queue
zzzubair
 
Priority Queue in Data Structure
Meghaj Mallick
 
linked list in Data Structure, Simple and Easy Tutorial
Afzal Badshah
 
Introduction to stack
vaibhav2910
 
Queue Implementation Using Array & Linked List
PTCL
 
Binary tree
Rajendran
 
Binary Search Tree in Data Structure
Dharita Chokshi
 
Graphs bfs dfs
Jaya Gautam
 
stack & queue
manju rani
 
Queue in Data Structure
Janki Shah
 
Stack a Data Structure
ForwardBlog Enewzletter
 
Data Structure (Queue)
Adam Mukharil Bachtiar
 
sparse matrix in data structure
MAHALAKSHMI P
 
Data structure by Digvijay
Digvijay Singh Karakoti
 
Insertion sort algorithm power point presentation
University of Science and Technology Chitttagong
 
Presentation on queue
Rojan Pariyar
 

Viewers also liked (20)

PPT
Queue Data Structure
Zidny Nafan
 
PPTX
Queue Data Structure (w/ php egs)
Roman Rodomansky
 
PPTX
Ppt presentation of queues
Buxoo Abdullah
 
PPT
Queue
Nabeel Ahsen
 
PPTX
STACKS IN DATASTRUCTURE
Archie Jamwal
 
PPSX
Stack
Seema Sharma
 
PPT
Stack & queue
Siddique Ibrahim
 
PDF
Queue
Zaid Shabbir
 
PPT
Queue and stacks
grahamwell
 
PPTX
Stack and queue
Shakila Mahjabin
 
PPTX
Data Structure -List Stack Queue
surya pandian
 
PPT
Stack Data Structure & It's Application
Tech_MX
 
PPT
DATA STRUCTURES
bca2010
 
PPTX
Queue
Raj Sarode
 
PDF
Queues
Hareem Aslam
 
PPT
Stacks & Queues By Ms. Niti Arora
kulachihansraj
 
PPT
Algorithm: priority queue
Tareq Hasan
 
PPTX
Queues in C++
Vineeta Garg
 
PPSX
Stacks Implementation and Examples
greatqadirgee4u
 
PPTX
Stack data structure
Tech_MX
 
Queue Data Structure
Zidny Nafan
 
Queue Data Structure (w/ php egs)
Roman Rodomansky
 
Ppt presentation of queues
Buxoo Abdullah
 
STACKS IN DATASTRUCTURE
Archie Jamwal
 
Stack & queue
Siddique Ibrahim
 
Queue and stacks
grahamwell
 
Stack and queue
Shakila Mahjabin
 
Data Structure -List Stack Queue
surya pandian
 
Stack Data Structure & It's Application
Tech_MX
 
DATA STRUCTURES
bca2010
 
Queue
Raj Sarode
 
Queues
Hareem Aslam
 
Stacks & Queues By Ms. Niti Arora
kulachihansraj
 
Algorithm: priority queue
Tareq Hasan
 
Queues in C++
Vineeta Garg
 
Stacks Implementation and Examples
greatqadirgee4u
 
Stack data structure
Tech_MX
 
Ad

Similar to Notes DATA STRUCTURE - queue (20)

PPT
Algo>Queues
Ain-ul-Moiz Khawaja
 
PPT
Lecture 2d queues
Victor Palmar
 
PPTX
Queue oop
Gouda Mando
 
PPT
Lec-12, 13 Quees Array Implementation IN
Anil Yadav
 
PPT
Lec-12, 13 Quees -How to determine empty and full Queues?
Anil Yadav
 
PPS
08 ds and algorithm session_11
Niit Care
 
PPT
Lec-12, 13 Quees In Queue IntQueue(int s)
Anil Yadav
 
PPT
Lec-12, 13 Queues - IntQueue IntQueue(int s) //constructor
Anil Yadav
 
PPT
Function enqueue inserts the value in num
Anil Yadav
 
PPS
ds and algorithm session
Varun Garg
 
PPTX
U3.stack queue
Ssankett Negi
 
PPTX
Queues_0748555555555555555555555526.pptx
nailapp2023
 
PPTX
Data structures
Sneha Chopra
 
PPT
Queues in C++ detailed explanation and examples .ppt
Jamiluddin39
 
PPT
Lec-07 Queues.ppt queues introduction to queue
AmsaAzeem
 
PPTX
Bca ii dfs u-2 linklist,stack,queue
Rai University
 
PPT
Computer notes data structures - 9
ecomputernotes
 
PPTX
Data Structures - Lecture 6 [queues]
Muhammad Hammad Waseem
 
PDF
Polynomialmotilalanehrunationalinstitute.pdf
yugpadhiyar2006
 
PPTX
Queue
Ayaz Akhtar
 
Algo>Queues
Ain-ul-Moiz Khawaja
 
Lecture 2d queues
Victor Palmar
 
Queue oop
Gouda Mando
 
Lec-12, 13 Quees Array Implementation IN
Anil Yadav
 
Lec-12, 13 Quees -How to determine empty and full Queues?
Anil Yadav
 
08 ds and algorithm session_11
Niit Care
 
Lec-12, 13 Quees In Queue IntQueue(int s)
Anil Yadav
 
Lec-12, 13 Queues - IntQueue IntQueue(int s) //constructor
Anil Yadav
 
Function enqueue inserts the value in num
Anil Yadav
 
ds and algorithm session
Varun Garg
 
U3.stack queue
Ssankett Negi
 
Queues_0748555555555555555555555526.pptx
nailapp2023
 
Data structures
Sneha Chopra
 
Queues in C++ detailed explanation and examples .ppt
Jamiluddin39
 
Lec-07 Queues.ppt queues introduction to queue
AmsaAzeem
 
Bca ii dfs u-2 linklist,stack,queue
Rai University
 
Computer notes data structures - 9
ecomputernotes
 
Data Structures - Lecture 6 [queues]
Muhammad Hammad Waseem
 
Polynomialmotilalanehrunationalinstitute.pdf
yugpadhiyar2006
 
Ad

Recently uploaded (20)

PDF
The Different Types of Non-Experimental Research
Thelma Villaflores
 
PPTX
Neurodivergent Friendly Schools - Slides from training session
Pooky Knightsmith
 
PPT
Talk on Critical Theory, Part One, Philosophy of Social Sciences
Soraj Hongladarom
 
PDF
Aprendendo Arquitetura Framework Salesforce - Dia 03
Mauricio Alexandre Silva
 
PPT
Talk on Critical Theory, Part II, Philosophy of Social Sciences
Soraj Hongladarom
 
PPTX
How to Create a PDF Report in Odoo 18 - Odoo Slides
Celine George
 
PDF
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
PPTX
EDUCATIONAL MEDIA/ TEACHING AUDIO VISUAL AIDS
Sonali Gupta
 
PPTX
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
PPTX
QUARTER 1 WEEK 2 PLOT, POV AND CONFLICTS
KynaParas
 
PPTX
How to Create Odoo JS Dialog_Popup in Odoo 18
Celine George
 
PDF
DIGESTION OF CARBOHYDRATES,PROTEINS,LIPIDS
raviralanaresh2
 
PDF
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
PDF
Geographical Diversity of India 100 Mcq.pdf/ 7th class new ncert /Social/Samy...
Sandeep Swamy
 
PPTX
grade 5 lesson matatag ENGLISH 5_Q1_PPT_WEEK4.pptx
SireQuinn
 
PPTX
Stereochemistry-Optical Isomerism in organic compoundsptx
Tarannum Nadaf-Mansuri
 
PPTX
Controller Request and Response in Odoo18
Celine George
 
PDF
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
PDF
Geographical diversity of India short notes by sandeep swamy
Sandeep Swamy
 
PPTX
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
The Different Types of Non-Experimental Research
Thelma Villaflores
 
Neurodivergent Friendly Schools - Slides from training session
Pooky Knightsmith
 
Talk on Critical Theory, Part One, Philosophy of Social Sciences
Soraj Hongladarom
 
Aprendendo Arquitetura Framework Salesforce - Dia 03
Mauricio Alexandre Silva
 
Talk on Critical Theory, Part II, Philosophy of Social Sciences
Soraj Hongladarom
 
How to Create a PDF Report in Odoo 18 - Odoo Slides
Celine George
 
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
EDUCATIONAL MEDIA/ TEACHING AUDIO VISUAL AIDS
Sonali Gupta
 
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
QUARTER 1 WEEK 2 PLOT, POV AND CONFLICTS
KynaParas
 
How to Create Odoo JS Dialog_Popup in Odoo 18
Celine George
 
DIGESTION OF CARBOHYDRATES,PROTEINS,LIPIDS
raviralanaresh2
 
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
Geographical Diversity of India 100 Mcq.pdf/ 7th class new ncert /Social/Samy...
Sandeep Swamy
 
grade 5 lesson matatag ENGLISH 5_Q1_PPT_WEEK4.pptx
SireQuinn
 
Stereochemistry-Optical Isomerism in organic compoundsptx
Tarannum Nadaf-Mansuri
 
Controller Request and Response in Odoo18
Celine George
 
Characteristics, Strengths and Weaknesses of Quantitative Research.pdf
Thelma Villaflores
 
Geographical diversity of India short notes by sandeep swamy
Sandeep Swamy
 
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 

Notes DATA STRUCTURE - queue

  • 2. Course Objectives At the end of the lesson students are expected to be able to: • Understand queue concepts and applications. • Understand queue structure and operations that can be done on queue. • Understand and know how to implement queue using array and linked list : linear array, circular array, linear link list and circular list.
  • 4. Introduction to Queue • New items enter at the back, or rear, of the queue • Items leave from the front of the queue • First-in, first-out (FIFO) property – The first item inserted into a queue is the first item to leave – Middle elements are logically inaccessible
  • 5. Introduction to Queue • Important in simulation & analyzing the behavior of complex systems
  • 6. Queue Applications • Real-World Applications – Cashier lines in any store – Check out at a bookstore – Bank / ATM – Call an airline
  • 7. Queue Applications • Computer Science Applications – Print lines of a document – Printer sharing between computers – Recognizing palindromes – Shared resource usage (CPU, memory access, …)
  • 8. Queue Applications • Simulation – A study to see how to reduce the wait involved in an application
  • 9. Queue implementation Remove/ Add/ A B C Enqueue Dequeue Front/Head Back/Rear Basic Structure of a Queue: •Data structure that hold the queue •head •rear
  • 10. Queue implementation Add/ A B C D Enqueue Head Rear Insert D into Queue (enQueue) : D is inserted at rear Remove/ Dequeue A B C D Head Rear Delete from Queue (deQueue) : A is removed
  • 11. Queue operations • Queue operations – Create an empty queue – Destroy a queue – Determine whether a queue is full – Add a new item to the queue (enQueue) – Determine whether a queue is empty – Remove the item that was added earliest(deQueue) – Retrieve at Front(getFront) – Retrieve at Back the item that was added earliest(getRear)
  • 12. Queue Implementation Implementation: – Array-based (Linear or Circular) – Pointer-based : Link list (Linear or Circular)
  • 13. 2.0 Queue Implementation Using Array(Linear)
  • 14. Queue Implementation Using Array(Linear) • Number of elements in Queue are fixed during declaration. • Need isFull() operation to determine whether a queue is full or not.
  • 15. Queue Implementation Using Array(Linear) • Queue structure need at least 3 elements: 1) Element to store items in Queue 2) Element to store index at head 3) Element to store index at rear
  • 16. Create Queue Operation • Declare – front & back are indexes in the array – Initial condition: front =0 & back = -1 – Size of an array in queue Queue 0 0 1 2 3 Max size -1 front back
  • 17. Create Queue operation Example Code 1 #include <iostream> using namespace std; #define max 5 int front = 0, back = -1; Create Queue char item[max], newitem; item 0 0 1 2 3 4 -1 front back Front refer to index 0 Continue…
  • 18. enQueue operation void enQueue(){ cout<<"nt#################n"; cout<<"nt1. enQueuen"; //check queue is full if(back == max - 1){ cout<<"ntQueue Is Full, Cannot Add Item In Queuen"; }else{ cout<<"nttEnter Item:"; cin>>newitem; back++; item[back]=newitem; cout<<endl; enQueue } } item back++ 0 0 1 2 3 4 0 front A back back = -1+1 back = 0 Front refer to index 0 From back/rear item[back] = newitem Continue…
  • 19. enQueue operation item back++ 0 0 1 2 3 4 1 front A B back back = 0 +1 back = 1 Front refer to index 0 From back/rear item[back] = newitem item back++ 0 0 1 2 3 4 2 front A B C back back = 1 +1 Front refer to index 0 back = 2 From back/rear item[back] = newitem Continue…
  • 20. enQueue operation item back++ 0 0 1 2 3 4 3 front A B C D back back = 2 +1 back = 3 Front refer to index 0 From back/rear item[back] = newitem item back++ 0 0 1 2 3 4 4 front A B C D E back back = 3 +1 back = 4 Front refer to index 0 From back/rear item[back] = newitem Continue…
  • 21. deQueue operation void deQueue(){ cout<<"nt#################n"; cout<<"nt2.deQueuen"; if(back < front){ cout<<"ntThere is no data to remove from queuen"; }else{ char itemdeleted; itemdeleted=item[front]; deQueue item[front] = NULL; cout<<"ntItem Remove From Queue:"<<itemdeleted<<endl; front++; } cout<<endl; item } 0 0 1 2 3 4 4 front A B C D E back back = 3 + 1 itemdeleted = item[front] Front refer to index 0 back = 4 front = 0 From front/head item[front] = NULL Continue…
  • 22. deQueue operation front++ item 1 0 1 2 3 4 4 front NULL B C D E back front = 0 + back = 3 + 1 1 back = 4 front = 1 Front refer to index 1 item 1 0 1 2 3 4 4 front NULL B C D E back back = 3 + 1 Front refer to index 1 back = 4 itemdeleted = item[front] From front/head front = 1 item[front] = NULL front++ item 2 0 1 2 3 4 4 front NULL NULL C D E back front = 1 + back = 3 + 1 1 back = 4 front = 2 Front refer to index 2 Continue…
  • 23. deQueue operation item 2 0 1 2 3 4 4 front NULL NULL C D E back back = 3 + 1 Front refer to index 2 back = 4 From front/head itemdeleted = item[front] item[front] = NULL front = 2 front++ item 3 0 1 2 3 4 4 front NULL NULL NULL D E back front = 2 + back = 3 + 1 1 back = 4 front = 3 Front refer to index 3 Continue…
  • 24. deQueue operation item 3 0 1 2 3 4 4 front NULL NULL NULL D E back back = 3 + 1 Front refer to index 3 back = 4 itemdeleted = item[front] From front/head front = 3 item[front] = NULL front++ item 4 0 1 2 3 4 4 front NULL NULL NULL NULL E back front = 3 + back = 3 + 1 1 back = 4 front = 4 Front refer to index 4 Continue…
  • 25. deQueue operation item 4 0 1 2 3 4 4 front NULL NULL NULL NULL E back back = 3 + 1 Front refer to index 4 back = 4 itemdeleted = item[front] From front/head front = 4 item[front] = NULL front++ item 5 0 1 2 3 4 4 front NULL NULL NULL NULL NULL back front = 4 + back = 3 + 1 1 back = 4 front = 5 Continue…
  • 26. Retrieve at front(getFront) operation void getFront(){ cout<<"nt#################n"; cout<<"nt3.getFrontn"; if(back < front){ cout<<"ntThere is no data to at frontn"; }else{ cout<<"ntItem At Front:"<<item[front]<<endl; } } Continue…
  • 27. Retrieve at back(getRear) operation void getRear(){ cout<<"nt#################n"; cout<<"nt4.getRearn"; if(back < front){ cout<<"ntThere is no data to at rearn"; }else{ cout<<"ntItem At Rear:"<<item[back]<<endl; } } Continue…
  • 28. destroyQueue operation void destroyQueue(){ delete [] item; } Continue…
  • 29. displayQueue operation void displayQueue(){ cout<<"ntDisplay Item In Queuen"; if(back < front){ cout<<"ntThere is no data in queue to be displayedn"; }else{ cout<<"t"; for(int i=0; i < max; i++ ){ cout<<"t"<<item[i]; } cout<<endl; } } Continue…
  • 30. Queue Implementation Using Array(Linear) int main() { int selection; menu: cout<<"nPlease Choose Your Selectionn"; cout<<"n1tenQueuen"; cout<<"n2tdeQueuen"; cout<<"n3tGetFrontn"; cout<<"n4tGetRearn"; cout<<"n5tDestroyQueuen"; cout<<"n6tDisplayn"; cout<<"ntSelection is:"; cin>>selection; Continue…
  • 31. Queue Implementation Using Array(Linear) switch(selection){ case 1: enQueue(); displayQueue(); goto menu; break; case 2: deQueue(); displayQueue(); goto menu; break; case 3: getFront(); displayQueue(); goto menu; break; Continue…
  • 32. Queue Implementation Using Array(Linear) case 4: getRear(); displayQueue(); goto menu; break; case 5: destroyQueue(); displayQueue(); goto menu; break; case 6: displayQueue(); goto menu; break; default:cout<<"ntWrong Selectionn"; } return 0; }
  • 33. Queue Implementation Using Array(Linear) • Problem: Rightward-Drifting: • After a sequence of additions & removals, items will drift towards the end of the array • enQueue operation cannot be performed on the queue below, since back = max – 1. front++ item 5 0 1 2 3 4 4 front NULL NULL NULL NULL NULL back front = 4 + back = 3 + 1 1 back = 4 front = 5
  • 34. Queue Implementation Using Array(Linear) • Rightward drifting solutions – Shift array elements after each deletion • Shifting dominates the cost of the implementation
  • 35. Queue Implementation Using Array(Linear) – Use a circular array: When Front or Back reach the end of the array, wrap them around to the beginning of the array • Problem: – Front & Back can't be used to distinguish between queue-full & queue- empty conditions
  • 36. Queue Implementation Using Array(Linear) • Solution: – Use a counter – Count == 0 means empty queue – Count == MAX_QUEUE means full queue
  • 37. 3.0 Queue Implementation Using Array(Circular)
  • 38. Queue Implementation Using Array(Circular) • Number of elements in Queue are fixed during declaration. • Need isFull() operation to determine whether a queue is full or not.
  • 39. Queue Implementation Using Array(Circular) • Queue structure need at least 3 elements: 1) Element to store items in Queue 2) Element to store index at head 3) Element to store index at rear 4) Element to store index in counter
  • 40. Create Queue Operation • Declare – front & back are indexes in the array – count to store index – Initial condition: front =0 , back = -1, count = 0 – Size of an array in queue
  • 41. Queue Implementation Using Array(Circular) – The Wrap-around effect is obtained by using modulo arithmetic (%-operator) front = 0 7 0 6 1 5 2 4 3 back = -1 count = 0
  • 42. Queue Implementation Using Array(Circular) – enQueue • Increment back, using modulo arithmetic • Insert item • Increment count – deQueue • Increment front using modulo arithmetic • Decrement count – Disadvantage • Overhead of maintaining a counter or flag
  • 43. Queue Implementation Using Array(Circular) Example Code 2: queue #include <iostream> front = 0 using namespace std; 7 0 6 1 #define max 8 char queue[max], newitem; 5 2 int front = 0, back = -1, count = 0; 4 3 back = -1 count = 0 Continue…
  • 44. Queue Implementation Using Array(Circular) void enQueue(){ cout<<"nt#### enQueue Circular ####n"; if(count == max){ cout<<"ntQueue Circular Is Full!!!n"; }else{ cout<<"ntfront:"<<front<<"t"<<"back:"<<back<<"tcount:"<<count<<“tmax:”<<max<<"n"; cout<<"ntEnter Item:"; front = 0 7 0 back = 0 cin>>newitem; A back = (back + 1)% max; 6 1 back = (-1 + 1) % 8 back = 0 % 8 queue[back] = newitem; back = 0 5 2 count++; 0 queue[0] = A 8√ 0 4 3 } } count = 0 + 1 0 count = 1 count = 1 0 Continue…
  • 45. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 0, count = 1 queue front = 0 7 0 A back = 1 6 1 back = (0 + 1) % 8 B back = 1 % 8 back = 1 5 2 0 queue[1] = B 8√ 1 4 3 count = 1 + 1 0 count = 2 1 count = 2 Continue…
  • 46. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 1, count = 2 queue front = 0 7 0 A 6 1 back = (1 + 1) % 8 B back = 2 % 8 C back = 2 5 2 back = 2 0 queue[2] = C 8√ 2 4 3 count = 2 + 1 0 count = 3 2 count = 3 Continue…
  • 47. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 2, count = 3 queue front = 0 7 0 A 6 1 back = (2 + 1) % 8 B back = 3 % 8 back = 3 C 5 2 0 queue[3] = D D 8√ 3 4 3 count = 3 + 1 0 count = 4 3 count = 4 back = 3 Continue…
  • 48. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 3, count = 4 queue front = 0 7 0 A 6 1 back = (3 + 1) % 8 B back = 4 % 8 back = 4 C 5 2 0 queue[4] = E E D 8√ 4 4 3 count = 4 + 1 0 count = 5 4 count = 5 back = 4 Continue…
  • 49. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 4, count = 5 queue front = 0 7 0 A 6 1 back = (4 + 1) % 8 B back = 5 % 8 back = 5 F C 5 2 0 queue[5] = F E D 8√ 5 back = 5 4 3 count = 5 + 1 0 count = 6 5 count = 6 Continue…
  • 50. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 5, count = 6 queue front = 0 back = 6 7 0 A 6 1 back = (5 + 1) % 8 G B back = 6 % 8 back = 6 F C 5 2 0 queue[6] = G E D 8√ 6 4 3 count = 6 + 1 0 count = 7 6 count = 7 Continue…
  • 51. enQueue Implementation Using Array(Circular) From previous slide: front = 0, back = 6, count = 7 queue back = 7 front = 0 7 0 H A 6 1 back = (6 + 1) % 8 G B back = 7 % 8 back = 7 F C 5 2 0 queue[7] = H E D 8√ 7 4 3 count = 7 + 1 0 count = 8 7 count = 8 Continue…
  • 52. deQueue Implementation Using Array(Circular) void deQueue(){ cout<<"nt#### deQueue Circular ####n"; if(count == 0){ cout<<"ntQueue Circular Is Empty, No Data To Be Deleted!!!n"; }else{ queue back = 7 queue[front] = NULL; 7 0 front=(front + 1) % max; H front = 1 6 1 count--; queue[0] = NULL G B front = (0 + 1) % 8 front = 1 % 8 F C } 5 2 0 front = 1 E D } 8√ 1 4 3 count = 8 - 1 0 count = 7 1 count = 7 Continue…
  • 53. deQueue Implementation Using Array(Circular) From previous slide: front = 1, back = 7 , count = 7 queue back = 7 7 0 H 6 1 queue[1] = NULL G front = (1 + 1) % 8 front = 2% 8 F C 5 2 0 front = 2 E D front = 2 8√ 2 4 3 count = 7 - 1 0 count = 6 2 count = 6 Continue…
  • 54. Queue Implementation Using Array(Circular) void displayQueue(){ cout<<"nt#### Display Queue Circular ####n"; cout<<"ntfront:"<<front<<"t"<<"back:"<<back<<"tcount:"<<count<<“tmax:”<<max<<"n"; if(count == 0){ cout<<"ntQueue Circular Is Empty, No Data To Be Displayn"; }else{ cout<<"ntItem In Queue Circularn"; for(int i = 0; i < max; i++){ cout<<"t"<<queue[i]; } } } Continue…
  • 55. Queue Implementation Using Array(Circular) int main(){ int selection; menu: cout<<"nnPlease Choose Your Selectionn"; cout<<"n1tenQueue Circularn"; cout<<"n2tdeQueue Circularn"; cout<<"n3tDisplay Queuen"; cout<<"ntSelection is:"; cin>>selection; Continue…
  • 56. Queue Implementation Using Array(Circular) switch(selection){ case 1: enQueue(); displayQueue(); goto menu; break; case 2: deQueue(); displayQueue(); goto menu; break; case 3: displayQueue(); goto menu; break; Continue…
  • 57. Queue Implementation Using Array(Circular) default:cout<<"ntWrong Selectionn"; } return 0; }
  • 58. 4.0 Queue Implementation Using Linked List(Linear)
  • 59. Queue Implementation Using Linked List(Linear) Pointer-Based Implementation • More straightforward than array-based • Need Two external pointer (Front & Back) which front to trace deQueue operation and back to trace deQueue operation.
  • 60. Create Queue Implementation Using Linked List(Linear) Example Code 1: #include <iostream> using namespace std; struct nodeQueue{ char name; int age; name age next nodeQueue *next; Compiler get the initial illustrated structure of node }; Continue…
  • 61. Create Queue Implementation Using Linked List(Linear) nodeQueue *back_ptr = NULL; NULL nodeQueue *front_ptr=NULL; back_ptr NULL front_ptr Continue…
  • 62. enQueue Implementation Using Linked List(Linear) void enQueue(){ 0110 //create new node 0110 Ali 29 NULL nodeQueue *newnode; newnode newnode = new nodeQueue; cout<<"nt####enQueue####n"; //assign data field for name and age cout<<"Enter Name:"; cin>>newnode->name; cout<<"Enter Age:"; cin>>newnode->age; newnode->next = NULL; Continue…
  • 63. enQueue Implementation Using Linked List(Linear) //insert newnode into queue Insertion to an empty queue //check whether queue is empty if((front_ptr == NULL) && (back_ptr == NULL)){ 0110 front_ptr = newnode; 0110 Ali 29 NULL back_ptr = newnode; newnode name age next }else{ 0110 0110 back_ptr->next = newnode; front_ptr back_ptr back_ptr = newnode; } Continue…
  • 64. enQueue Implementation Using Linked Insertion to a non empty queue List(Linear) 0111 0111 Tina 30 NULL newnode name age next 0110 0110 Ali 29 NULL 0110 front_ptr back_ptr name age next back_ptr->next = newnode; back_ptr=newnode; Continue…
  • 65. enQueue Implementation Using Linked List(Linear) Insertion to a non empty queue 0110 0111 0110 Ali 29 0111 Tina 30 NULL 0111 front_ptr back_ptr name age next name age next Continue…
  • 66. deQueue Implementation Using Linked List(Linear) Continue…
  • 67. void deQueue(){ cout<<"nt####deQueue####n"; //check whether queue is empty if((front_ptr == NULL) && (back_ptr == NULL)){ cout<<"ntQueue Is Empty!!!n"; }else{ nodeQueue *temp; temp = front_ptr; if(front_ptr->next == NULL){ front_ptr = NULL; back_ptr = NULL; If the queue contains one item only delete temp; }else{ front_ptr = front_ptr->next; delete temp; } } } Continue…
  • 68. deQueue Implementation Using Linked List(Linear) If the queue contains one item only to be deleted nodeQueue *temp; temp = front_ptr; 0110 0110 Ali 29 NULL 0110 front_ptr back_ptr name age next 0110 if(front_ptr->next == NULL){ temp front_ptr = NULL; NULL NULL back_ptr = NULL; front_ptr back_ptr delete temp; }else{ …} Continue…
  • 69. deQueue Implementation Using Linked List(Linear) If the queue contains more than one item nodeQueue *temp; temp = front_ptr; 0110 0111 0110 Ali 29 0111 Tina 30 NULL 0111 front_ptr name age next name age next back_ptr 0110 temp Continue…
  • 70. …}else{ front_ptr = front_ptr->next; delete temp; } 0110 0111 0111 Ali 29 0111 Tina 30 NULL 0111 front_ptr name age next name age next back_ptr 0110 temp 0111 0111 Tina 30 NULL 0111 front_ptr name age next back_ptr Continue…
  • 71. displayQueue Implementation Using Linked List(Linear) void displayQueue(){ cout<<"nt####Display Queue####n"; if((front_ptr == NULL) && (back_ptr == NULL)){ cout<<"ntQueue Is Empty!!!n"; cout<<"ntfront_ptr :"<<front_ptr<<"tback_ptr :"<<back_ptr<<endl; }else{ nodeQueue *cursor; cursor=front_ptr; cout<<"ntThe Elements In Queue Aren"; cout<<"ntfront_ptr :"<<front_ptr<<"tback_ptr :"<<back_ptr<<endl; int node=1; while(cursor){ cout<<"ntNode :"<<node++<<"tName :"<<cursor->name<<"tAge :"<<cursor- >age<<"tcursor-next:"<<cursor->next<<endl; cursor=cursor->next; } } Continue…
  • 72. Queue Implementation Using Linked List(Linear) int main() { int selection; menu: cout<<"nnMenu Selectionn"; cout<<"n1tenQueuen"; cout<<"n2tdeQueuen"; cout<<"n3tDisplay Queuen"; cout<<"ntSelection is:"; cin>>selection; Continue…
  • 73. Queue Implementation Using Linked List(Linear) switch(selection){ case 1: enQueue(); displayQueue(); goto menu; break; case 2: deQueue(); displayQueue(); goto menu; break; case 3: displayQueue(); goto menu; break; default:cout<<"ntWrong Selectionn"; } return 0; } Continue…