{"id":464,"date":"2021-06-07T15:38:46","date_gmt":"2021-06-07T15:38:46","guid":{"rendered":"https:\/\/xcodeph.net\/?page_id=464"},"modified":"2021-06-08T16:46:24","modified_gmt":"2021-06-08T16:46:24","slug":"queue","status":"publish","type":"page","link":"https:\/\/xcodeph.net\/index.php\/queue\/","title":{"rendered":"Queue"},"content":{"rendered":"\n<h2><strong>Queue<\/strong><\/h2>\n\n\n\n<p><br>The process of inserting an element on one end and deleting an element on the other end.<\/p>\n\n\n\n<p><strong>A logically First-in-First-out (FIFO).<br><\/strong><\/p>\n\n\n\n<p>It is a homogenous collection of elements in which new elements are added at one end called rear, and the existing elements are deleted from the other end called front.<\/p>\n\n\n\n<h2><strong>Queue Operation<\/strong><\/h2>\n\n\n\n<p><strong>enqueue<\/strong><br>Insert (or add) an element to the queue (push). If we try to push (or insert or add) an element to queue where the size of an array is reach, overflow occurs. When queue is full it is naturally not possible to insert any more elements<\/p>\n\n\n\n<p><strong>dequeue<\/strong><br>Delete (or remove) an element from a queue (pop). If we try to pop (or delete or remove) an element from queue when it is empty, underflow occurs. It is not possible to delete (or take out) any element when there is no element in the queue.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2><strong>Other Queues<\/strong><\/h2>\n\n\n\n<p>\u2022 Circular queue<br>\u2022 Double-ended queue (Deque)<br>\u2022 Priority queue (can be done using linked list)<\/p>\n\n\n\n<h2><strong>Queue CODES<\/strong><\/h2>\n\n\n\n<p><strong>Using Standard Library (QUEUE)<\/strong> <\/p>\n\n\n\n<p>Program 1<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\/\/queue library\n#include &lt;iostream>\n#include &lt;queue>\nusing namespace std;\nint main()\n{\n\tqueue&lt;int> grade;\n\tchar quest;\n\tint n;\n\tcout &lt;&lt; \"Enter data y\/n?\";\n\tcin >> quest;\n\twhile(quest=='Y' || quest=='y')\n\t{\n\t\tcout &lt;&lt; \"Enter integer data \";\n\t\tcin >> n;\n\t\tgrade.push(n);\n\t\t\n\t\tcout &lt;&lt; \"Enter data y\/n?\";\n\t\tcin >> quest;\n\t}\n\tcout &lt;&lt; endl;\n\tcout &lt;&lt; \"front element \" &lt;&lt; grade.front() &lt;&lt; endl;\n\tcout &lt;&lt; \"last element \" &lt;&lt; grade.back() &lt;&lt; endl;\n\tcout &lt;&lt; \"size of queue \" &lt;&lt; grade.size() &lt;&lt;endl;\n\t\n\twhile(!grade.empty())\n\t{\n\t\tcout &lt;&lt; grade.front() &lt;&lt;endl;\n\t\tgrade.pop();\n\t}\n\tcout &lt;&lt; \"size of queue \" &lt;&lt; grade.size() &lt;&lt;endl;\n\n\tcin.ignore().get();\n\treturn 0;\n\n}<\/pre>\n\n\n\n<p>Program 2<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\/\/queue\n#include&lt;iostream>\n#include&lt;queue>\n#include&lt;string>\nusing namespace std;\nint main()\n{\n\tqueue&lt;string> students;\n\tstring studname;\n\tchar quest;\n\tcout &lt;&lt; \"Do you want to enter data y\/n? \";\n\tcin >> quest;\n\twhile (quest =='Y' || quest=='y')\n\t{\n\t\tcout  &lt;&lt; \"enter data for queue \";\n\t\tcin >> studname;\n\t\tstudents.push(studname);\n\t\tcout &lt;&lt; \"Do you want to enter data y\/n? \";\n\t\tcin >> quest;\n\t}\n\tcout &lt;&lt;  endl;\n\tcout &lt;&lt; \"front data \" &lt;&lt; students.front() &lt;&lt; endl; \/\/front\n\tcout &lt;&lt; \"back data \" &lt;&lt; students.back() &lt;&lt; endl; \/\/ rear\n\tcout &lt;&lt; \"queue size \" &lt;&lt; students.size() &lt;&lt; endl;\n\twhile (!students.empty()) \n\t{\n\t\tcout &lt;&lt; \"popped data \" &lt;&lt; students.front() &lt;&lt; endl;\n\t\tstudents.pop();\n\t}\n\tcout &lt;&lt; \"queue size \" &lt;&lt; students.size() &lt;&lt; endl;\n\tcin.ignore().get();\n\treturn 0;\n\t\n}<\/pre>\n\n\n\n<p>Program 3<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\n#include &lt;iostream>\n#define QUEUE_SIZE 5\nusing namespace std;\n\nint queueArr[QUEUE_SIZE];\nvoid dequeue();\nvoid enqueue(int);\nvoid display();\nint front=-1;\nint rear=-1;\n\nint main()\n{\n\twhile(1)\n\t{\n\t\tint choice;\n\t\tsystem(\"clear\");\n\t\tcout &lt;&lt; \"[1] - Enqueue\\n\";\n\t\tcout &lt;&lt; \"[2] - Dequeue\\n\";\n\t\tcout &lt;&lt; \"[3] - Display\\n\";\n\t\tcout &lt;&lt; \"[4] - Exit\\n\";\n\t\tcout &lt;&lt; \"===================\\n\";\n\t\tcout &lt;&lt; \"Enter your choice: \";\n\t\tcin >> choice;\n\t\tswitch(choice){\n\t\t\tcase 1: \n\t\t\t\tint num;\n\t\t\t\tcout &lt;&lt; \"Enter a number to enqueue: \";\n\t\t\t\tcin >> num;\n\t\t\t\tenqueue(num);\t\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tdequeue();\t\t\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\texit(1);\n\t\t\tdefault:\n\t\t\t\tcout &lt;&lt; \"\\nWrong choice!\\n\";\n\t\t}\n\t\tcout &lt;&lt; endl;\n\t\tcin.ignore().get();\n\t}\n\t\n\treturn 0;\n}\n\nvoid display()\n{\n\tif(rear==-1 || front>rear)\n\t\tcout &lt;&lt; \"Queue is empty!\";\n\telse\n\t\tfor(int i=front; i&lt;=rear; i++)\n\t\t\tcout &lt;&lt; \"[\" &lt;&lt; i &lt;&lt; \"] : \" &lt;&lt;queueArr[i] &lt;&lt; endl;\n}\n\nvoid enqueue(int n)\n{\n\tif(rear&lt;QUEUE_SIZE-1)\n\t{\n\t\tif(front==-1)\n\t\t\tfront++;\n\t\tqueueArr[++rear]=n;\t\n\t}\n\telse\n\t\tcout &lt;&lt; \"Queue is overflow!\";\n}\n\nvoid dequeue()\n{\n\tif(rear&lt;front || front==-1)\n\t{\n\t\tcout &lt;&lt; \"Queue is empty!\";\n\t\tfront=0;\n\t\trear=-1;\n\t}\n\telse\n\t\tcout &lt;&lt; \"Dequeue value is \" &lt;&lt; queueArr[front++];\n}\n\n<\/pre>\n\n\n\n<p>Program 4<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">#include &lt;iostream>\n#include &lt;queue>\n#include &lt;string>\n#include &lt;cstdlib>\nusing namespace std;\nint main()\n{\n    queue&lt;int> q;\n    int choice, item;\n    while (1)\n    {\n        cout&lt;&lt;\"\\n---------------------\"&lt;&lt;endl;\n        cout&lt;&lt;\"Queue Implementation in Stl\"&lt;&lt;endl;\n        cout&lt;&lt;\"\\n---------------------\"&lt;&lt;endl;\n        cout&lt;&lt;\"1.Insert \"&lt;&lt;endl;\n        cout&lt;&lt;\"2.Delete \"&lt;&lt;endl;\n        cout&lt;&lt;\"3.Size of the Queue\"&lt;&lt;endl;\n        cout&lt;&lt;\"4.Front Element \"&lt;&lt;endl;\n        cout&lt;&lt;\"5.Last Element ]\"&lt;&lt;endl;\n        cout&lt;&lt;\"6.Exit\"&lt;&lt;endl;\n        cout&lt;&lt;\"Enter your Choice: \";\n        cin>>choice;\n        switch(choice)\n        {\n        case 1:\n            cout&lt;&lt;\"Enter value to be inserted: \";\n            cin>>item;\n            q.push(item);\n            break;\n        case 2:\n            item = q.front();\n            q.pop();\n            cout&lt;&lt;\"Element \"&lt;&lt;item&lt;&lt;\" Deleted\"&lt;&lt;endl;\n            break;\n        case 3:\n\t    cout&lt;&lt;\"Size of the Queue: \";\n\t    cout&lt;&lt;q.size()&lt;&lt;endl;\n            break;\n        case 4:\n            cout&lt;&lt;\"Front Element of the Queue: \";\n\t    cout&lt;&lt;q.front()&lt;&lt;endl;\n            break;\n        case 5:\n            cout&lt;&lt;\"Back Element of the Queue: \";\n            cout&lt;&lt;q.back()&lt;&lt;endl;\n            break;\n        case 6:\n            exit(1);\n\t    break;\n        default:\n            cout&lt;&lt;\"Wrong Choice\"&lt;&lt;endl;\n        }\n    }\n    return 0;\n}\n<\/pre>\n\n\n\n<p>Queue using User defined function (Array Implementation)<\/p>\n\n\n\n<p>Program 5<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\n#include &lt;iostream>\n#define QUEUE_SIZE 5\nusing namespace std;\n\nint queueArr[QUEUE_SIZE];\nvoid dequeue();\nvoid enqueue(int);\nvoid display();\nint front=-1;\nint rear=-1;\n\nint main()\n{\n\twhile(1)\n\t{\n\t\tint choice;\n\t\tsystem(\"clear\");\n\t\tcout &lt;&lt; \"[1] - Enqueue\\n\";\n\t\tcout &lt;&lt; \"[2] - Dequeue\\n\";\n\t\tcout &lt;&lt; \"[3] - Display\\n\";\n\t\tcout &lt;&lt; \"[4] - Exit\\n\";\n\t\tcout &lt;&lt; \"===================\\n\";\n\t\tcout &lt;&lt; \"Enter your choice: \";\n\t\tcin >> choice;\n\t\tswitch(choice){\n\t\t\tcase 1: \n\t\t\t\tint num;\n\t\t\t\tcout &lt;&lt; \"Enter a number to enqueue: \";\n\t\t\t\tcin >> num;\n\t\t\t\tenqueue(num);\t\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tdequeue();\t\t\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\texit(1);\n\t\t\tdefault:\n\t\t\t\tcout &lt;&lt; \"\\nWrong choice!\\n\";\n\t\t}\n\t\tcout &lt;&lt; endl;\n\t\tcin.ignore().get();\n\t}\n\t\n\treturn 0;\n}\n\nvoid display()\n{\n\tif(rear==-1 || front>rear)\n\t\tcout &lt;&lt; \"Queue is empty!\";\n\telse\n\t\tfor(int i=front; i&lt;=rear; i++)\n\t\t\tcout &lt;&lt; \"[\" &lt;&lt; i &lt;&lt; \"] : \" &lt;&lt;queueArr[i] &lt;&lt; endl;\n}\n\nvoid enqueue(int n)\n{\n\tif(rear&lt;QUEUE_SIZE-1)\n\t{\n\t\tif(front==-1)\n\t\t\tfront++;\n\t\tqueueArr[++rear]=n;\t\n\t}\n\telse\n\t\tcout &lt;&lt; \"Queue is overflow!\";\n}\n\nvoid dequeue()\n{\n\tif(rear&lt;front || front==-1)\n\t{\n\t\tcout &lt;&lt; \"Queue is empty!\";\n\t\tfront=0;\n\t\trear=-1;\n\t}\n\telse\n\t\tcout &lt;&lt; \"Dequeue value is \" &lt;&lt; queueArr[front++];\n}\n\n<\/pre>\n\n\n\n<p>Queue using User defined function (Linked List Implementation) <\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\n\/\/\/\/Program: Queue using linked list\n#include &lt;iostream>\n#include &lt;iomanip>\nusing namespace std;\n\nstruct node{\n\tint data;\n\tnode *next;\n};\/\/*front,*rear;\n\nvoid dequeue();\nvoid enqueue(int);\nvoid display();\nnode *front=NULL;\t\t\/\/head\nnode *rear=NULL;\t\t\/\/tail\n\nint main()\n{\n\twhile(1)\n\t{\n\t\tint choice;\n\t\tsystem(\"clear\");\n\t\tcout &lt;&lt; \"QUEUE USING LINKED LIST\\n\";\n\t\tcout &lt;&lt; \"[1] - Enqueue\\n\";\n\t\tcout &lt;&lt; \"[2] - Dequeue\\n\";\n\t\tcout &lt;&lt; \"[3] - Display\\n\";\n\t\tcout &lt;&lt; \"[4] - Exit\\n\";\n\t\tcout &lt;&lt; \"===================\\n\";\n\t\tcout &lt;&lt; \"Enter your choice: \";\n\t\tcin >> choice;\n\t\tswitch(choice){\n\t\t\tcase 1: \n\t\t\t\tint num;\n\t\t\t\tcout &lt;&lt; \"Enter a number to enqueue: \";\n\t\t\t\tcin >> num;\n\t\t\t\tenqueue(num);\t\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tdequeue();\t\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tdisplay();\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\texit(1);\n\t\t\tdefault:\n\t\t\t\tcout &lt;&lt; \"\\nWrong choice!\\n\";\n\t\t}\n\t\tcout &lt;&lt; endl;\n\t\tcin.ignore().get();\n\t}\n\t\n\treturn 0;\n}\n\nvoid display()\n{\n\tnode *p;\n\tif(front==NULL)\n\t\tcout &lt;&lt; \"Nothing to display!\\n\";\n\telse\n\t{\n\t\tcout &lt;&lt; \"Stack elements:\\n\";\n\t\tcout &lt;&lt; setw(10) &lt;&lt; \"POINTER\" &lt;&lt; setw(10) &lt;&lt; \"VALUE\" &lt;&lt; setw(20) &lt;&lt; \"NEXT\" &lt;&lt; endl;\n\t\tp=front;\n\t\twhile(p != NULL)\n\t\t{\n\t\t\tcout &lt;&lt; setw(10) &lt;&lt; p \n\t\t\t\t&lt;&lt; setw(10) &lt;&lt; p->data \n\t\t\t\t&lt;&lt; setw(20) &lt;&lt; p->next \n\t\t\t\t&lt;&lt; endl;\n\t\t\tp = p->next;\n\t\t\t\n\t\t}\n\t}\n}\n\nvoid enqueue(int n)\n{\n\tnode *tmp = new node;\n\ttmp->data = n;\n\ttmp->next = NULL;\n\tif(front==NULL)\n\t{\n\t\tfront = tmp;\t\n\t\trear = tmp;\n\t\treturn;\n\t}\n\trear->next=tmp;\n\trear=tmp;\n}\n\nvoid dequeue()\n{\n\tnode *tmp;\n\ttmp=front;\n\tif(front!=NULL)\n\t{\n\t\tcout &lt;&lt; \"You dequeue value \" &lt;&lt; front->data &lt;&lt; endl;\n\t\tfront=front->next;\n\t\tdelete(tmp);\n\t}\n\telse\n\t\tcout &lt;&lt; \"Queue is empty!\\n\";\n}\n\n<\/pre>\n\n\n\n<p>Queue (OOP Implementation)<\/p>\n\n\n\n<p>IntQueue.h<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\nclass IntQueue\n{\n\tprivate:\n\t\tint *queueArray;\n\t\tint queueSize;\n\t\tint front;\n\t\tint rear;\n\t\tint numItems;\n\tpublic:\n\tIntQueue(int);\n\t~IntQueue();\n\tvoid enqueue(int);\n\tvoid dequeue(int &amp;);\n\tbool isEmpty();\n\tbool isFull();\n\tvoid clear();\n};<\/pre>\n\n\n\n<p>IntQueue.cpp<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\n#include &lt;iostream>\n#include \"IntQueue.h\"\nusing namespace std;\n\n\/\/ Constructor\n\tIntQueue::IntQueue(int s)\n\t{\n\t\tqueueArray = new int[s];\n\t\tqueueSize = s;\n\t\tfront = 1;\n\t\trear = 1;\n\t\tnumItems = 0;\n\t}\n\n\/\/ Destructor\n\tIntQueue::~IntQueue(){\n\t\tdelete [] queueArray;\n\t}\n\n\n\/\/********************************************\n\/\/ Function enqueue inserts the value in num\n\/\/ at the rear of the queue.\n\nvoid IntQueue::enqueue(int num)\n{\n\tif (isFull())\n\t\tcout &lt;&lt; \"The queue is full.\\n\";\n\telse\n\t\t\/\/ Calculate the new rear position\n\trear = (rear + 1 ) % queueSize;\n\t\/\/ Insert new item\n\tqueueArray[rear] = num;\n\t\/\/ Update item count\n\tnumItems++;\n}\n\n\/\/*********************************************\n\/\/ Function dequeue removes the value at the\n\/\/ front of the queue, and copies t into num.\nvoid IntQueue::dequeue(int &amp;num)\n{\n\tif (isEmpty())\n\t\tcout &lt;&lt; \"The queue is empty.\\n\";\n\telse\n\t\t{\n\t\t\/\/ Move front\n\t\tfront = (front + 1 ) % queueSize;\n\t\t\/\/ Retrieve the front item\n\t\tnum = queueArray[front];\n\t\t\/\/ Update item count\n\t\tnumItems--;\n\t\t}\n}\n\n\/\/*********************************************\n\/\/ Function isEmpty returns true if the queue\n\/\/ is empty, and false otherwise.\nbool IntQueue::isEmpty() {\n\tbool status;\n\n\tif (numItems)\n\t\tstatus = false;\n\telse\n\t\tstatus = true;\n\treturn status;\n\n}\n\n\/\/********************************************\n\/\/ Function isFull returns true if the queue\n\/\/ is full, and false otherwise.\nbool IntQueue::isFull(){\n\tbool status;\n\t\n\tif (numItems &lt; queueSize)\n\t\tstatus = false;\n\telse\n\t\tstatus = true;\n\treturn status;\n}\n\n\/\/*******************************************\n\/\/ Function clear resets the front and rear\n\/\/ indices, and sets numItems to 0.\nvoid IntQueue::clear(){\n\tfront = queueSize -1;\n\trear = queueSize -1;\n\tnumItems = 0;\n\n}<\/pre>\n\n\n\n<p>Main.cpp<\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">\/\/ This program demonstrates the IntQeue class\n#include &lt;iostream>\n#include \"IntQueue.h\"\nusing namespace std;\n\nint main(){\n\tIntQueue iQueue(5);\n\tcout &lt;&lt; \"Enqueuing 5 items...\\n\";\n\t\/\/ Enqueue 5\n\tfor (int x = 0; x &lt;5; x++)\n\t\tiQueue.enqueue(x); \/\/0-4\n\t\n\tfor (int x=0; x&lt;5;x++)\n\t\tcout &lt;&lt; x;\n\t\n\t\/\/ Attempt to enqueue a 6th\n\tcout &lt;&lt; \"Now attempting to enqueue again...\\n\";\n\tiQueue.enqueue(5);\n\t\n\t\/\/ Deqeue and retrieve all items in the queue\n\t\n\tcout &lt;&lt; \"The values in the queue were:\\n\";\n\twhile (!iQueue.isEmpty())\n\t\t{\n\t\t\tint value;\n\t\t\tiQueue.dequeue(value);\n\t\t\t\tcout &lt;&lt; value &lt;&lt; endl;\n\t\t}\t\n\treturn 0;\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Queue The process of inserting an element on one end and deleting an element on the other end. A logically First-in-First-out (FIFO). It is a homogenous collection of elements in which new elements are added at one end called rear, and the existing elements are deleted from the other end called front. Queue Operation enqueueInsert [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/pages\/464"}],"collection":[{"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":11,"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/pages\/464\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/pages\/464\/revisions\/486"}],"wp:attachment":[{"href":"https:\/\/xcodeph.net\/index.php\/wp-json\/wp\/v2\/media?parent=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}