{"id":27020,"date":"2018-01-02T21:45:49","date_gmt":"2018-01-02T16:15:49","guid":{"rendered":"https:\/\/www.wikitechy.com\/technology\/?p=27020"},"modified":"2018-11-01T10:22:53","modified_gmt":"2018-11-01T04:52:53","slug":"queue-data-structure-implementation-dequeue-using-circular-array","status":"publish","type":"post","link":"https:\/\/www.wikitechy.com\/technology\/queue-data-structure-implementation-dequeue-using-circular-array\/","title":{"rendered":"Implementation of Dequeue using circular array"},"content":{"rendered":"<p><strong><span style=\"color: #008080;\">Implementation Dequeue Using Circular Array:<\/span><\/strong><\/p>\n<p>Dequeue or Double Ended Queue is a generalized version of <a href=\"https:\/\/www.wikitechy.com\/technology\/java-programming-queue-data-structure-introduction-and-array-implementation\/\" target=\"_blank\" rel=\"noopener\">Queue data structure<\/a> that allows insert and delete at both ends.In previous post we had discussed introduction of dequeue. Now in this post we see how we implement dequeue Using circular <a href=\"https:\/\/www.wikitechy.com\/tutorials\/javascript\/remove-empty-elements-from-an-array-in\" target=\"_blank\" rel=\"noopener\">array<\/a>.<\/p>\n<h3 id=\"operations-on-dequeue\"><span style=\"color: #003366;\"><strong>Operations on Dequeue:<\/strong><\/span><\/h3>\n<p>Mainly the following four <strong>basic operations<\/strong> are performed on <a href=\"https:\/\/www.wikitechy.com\/step-by-step-tutorials\/ruby\/ruby-queue\" target=\"_blank\" rel=\"noopener\">queue<\/a>:<br \/>\n<span style=\"color: #0000ff;\"><strong>insertFront()<\/strong>:<\/span> Adds an item at the front of Dequeue.<br \/>\n<span style=\"color: #0000ff;\"><strong>insertRear()<\/strong>:<\/span> Adds an item at the rear of Dequeue.<br \/>\n<span style=\"color: #0000ff;\"><strong>deleteFront()<\/strong>:<\/span> Deletes an item from front of Dequeue.<br \/>\n<span style=\"color: #0000ff;\"><strong>deleteRear()<\/strong>:<\/span> Deletes an item from rear of Dequeue.<\/p>\n<p>In addition to above operations, following operations are also supported<br \/>\n<span style=\"color: #0000ff;\"><strong>getFront()<\/strong>: <span style=\"color: #333333;\">Gets the front item from queue.<\/span><\/span><br \/>\n<span style=\"color: #0000ff;\"><strong>getRear()<\/strong>:<\/span> Gets the last item from queue.<br \/>\n<span style=\"color: #0000ff;\"><strong>isEmpty()<\/strong>:<\/span> Checks whether Dequeue is empty or not.<br \/>\n<span style=\"color: #0000ff;\"><strong>isFull()<\/strong>:<\/span> Checks whether Dequeue is full or not.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter size-full wp-image-27032\" src=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Queue-Data-Structure-Implementation-of-Deque-using-circular-array.png\" alt=\"Queue-Data Structure-Implementation of Deque using circular array\" width=\"742\" height=\"221\" srcset=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Queue-Data-Structure-Implementation-of-Deque-using-circular-array.png 742w, https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Queue-Data-Structure-Implementation-of-Deque-using-circular-array-300x89.png 300w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/p>\n[ad type=\u201dbanner\u201d]\n<h3 id=\"circular-array-implementation-dequeue\"><span style=\"color: #333300;\"><strong>Circular array implementation dequeue\u00a0<\/strong><\/span><\/h3>\n<p>For implementing dequeue, we need to keep track of two indices, front and rear. We enqueue(push) an item at the rear or the front end of queue and dequeue(<a href=\"https:\/\/www.wikitechy.com\/step-by-step-tutorials\/ruby\/ruby-stack-pop-operation\" target=\"_blank\" rel=\"noopener\">pop<\/a>) an item from both rear and front end.<\/p>\n<h3 id=\"working\"><span style=\"color: #000080;\"><strong>Working <\/strong><\/span><\/h3>\n<p>1. Create an empty array <strong>\u2018arr<\/strong>\u2019 of size \u2018<strong>n<\/strong>\u2019<br \/>\ninitialize <strong>front = -1<\/strong> , <strong>rear = 0<\/strong><br \/>\nInserting First element in dequeue either front end or read end they both lead to the same result.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-27041\" src=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Queue-Data-Structure-Implementation-of-Deque-using-circular-array-1.png\" alt=\"Queue-Data Structure Implementation of Deque using circular array\" width=\"705\" height=\"154\" srcset=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Queue-Data-Structure-Implementation-of-Deque-using-circular-array-1.png 705w, https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Queue-Data-Structure-Implementation-of-Deque-using-circular-array-1-300x66.png 300w\" sizes=\"(max-width: 705px) 100vw, 705px\" \/><\/p>\n<p>after insert <strong>Front<\/strong> Points = 0 and <strong>Rear<\/strong> points = 0<\/p>\n<h3 id=\"insert-elements-at-rear-end\"><span style=\"color: #333399;\"><strong>Insert Elements at Rear end<\/strong><\/span><\/h3>\n<pre>a). First we check dequeue if Full or Not \r\nb). IF Rear == Size-1 \r\n       then reinitialize Rear = 0 ;\r\n    Else increment Rear by '1'\r\n    and push current key into Arr[ rear ] = key \r\nFront remain same.      \r\n<\/pre>\n[ad type=\u201dbanner\u201d]\n<h3 id=\"insert-elements-at-front-end\"><span style=\"color: #993366;\"><strong>Insert Elements at Front end<\/strong><\/span><\/h3>\n<pre>a). First we check dequeue if Full or Not\r\nb). IF Front == 0 || initial position, move Front\r\n                     to points last index of array\r\n       front = size - 1\r\n    Else decremented front by '1' and push \r\n         current key into Arr[ Front] = key \r\nRear remain same. \r\n\r\n<img decoding=\"async\" class=\"aligncenter size-full wp-image-27045\" src=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Implementation-of-Deque-using-circular-array.png\" alt=\"Implementation of Deque using circular array\" width=\"275\" height=\"295\" \/><\/pre>\n<h3 id=\"delete-element-from-rear-end\"><span style=\"color: #800080;\"><strong>Delete Element From Rear end<\/strong><\/span><\/h3>\n<pre>a). first Check dequeue is Empty or Not\r\nb).  If dequeue has only one element\r\n        front = -1 ; rear =-1 ;\r\n    Else IF Rear points to the first index of array\r\n         it's means we have to move rear to points \r\n         last index [ now first inserted element at \r\n         front end become rear end ]  \r\n            rear = size-1 ;\r\n    Else || decrease rear by '1'  \r\n            rear = rear-1;\r\n<\/pre>\n[ad type=\u201dbanner\u201d]\n<h3 id=\"delete-element-from-front-end\"><span style=\"color: #003366;\"><strong>Delete Element From Front end<\/strong><\/span><\/h3>\n<pre>a). first Check dequeue is Empty or Not\r\nb).  If dequeue has only one element\r\n            front = -1 ; rear =-1 ;\r\n    Else IF front points to the last index of the array\r\n         it's means we have no more elements in array so \r\n          we move front to points first index of array\r\n            front = 0 ;\r\n    Else || increment Front by '1'  \r\n            front = front+1;\r\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-27053\" src=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Implementation-of-Deque-using-circular-array-1.png\" alt=\"Implementation of Deque using -circular array\" width=\"695\" height=\"222\" srcset=\"https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Implementation-of-Deque-using-circular-array-1.png 695w, https:\/\/www.wikitechy.com\/technology\/wp-content\/uploads\/2017\/06\/Implementation-of-Deque-using-circular-array-1-300x96.png 300w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><\/pre>\n<h3 id=\"java-implementation-dequeue-using-circular-array\"><span style=\"color: #008080;\">Java Implementation Dequeue Using Circular Array:<\/span><\/h3>\n[pastacode lang=\u201djava\u201d manual=\u201d%2F%2F%20Java%20implementation%20of%20De-queue%20using%20circular%0A%2F%2F%20array%0A%20%20%0A%2F%2F%20A%20structure%20to%20represent%20a%20Deque%0Aclass%20Deque%0A%7B%0A%20%20%20%20static%20final%20int%20MAX%20%3D%20100%3B%0A%20%20%20%20int%20%20arr%5B%5D%3B%0A%20%20%20%20int%20%20front%3B%0A%20%20%20%20int%20%20rear%3B%0A%20%20%20%20int%20%20size%3B%0A%20%20%20%20%20%0A%20%20%20%20public%20Deque(int%20size)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20arr%20%3D%20new%20int%5BMAX%5D%3B%0A%20%20%20%20%20%20%20%20front%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20rear%20%3D%200%3B%0A%20%20%20%20%20%20%20%20this.size%20%3D%20size%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F*%2F%2F%20Operations%20on%20Deque%3A%0A%20%20%20%20void%20%20insertfront(int%20key)%3B%0A%20%20%20%20void%20%20insertrear(int%20key)%3B%0A%20%20%20%20void%20%20deletefront()%3B%0A%20%20%20%20void%20%20deleterear()%3B%0A%20%20%20%20bool%20%20isFull()%3B%0A%20%20%20%20bool%20%20isEmpty()%3B%0A%20%20%20%20int%20%20getFront()%3B%0A%20%20%20%20int%20%20getRear()%3B*%2F%0A%20%20%0A%20%20%20%20%2F%2F%20Checks%20whether%20Deque%20is%20full%20or%20not.%0A%20%20%20%20boolean%20isFull()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20return%20((front%20%3D%3D%200%20%26%26%20rear%20%3D%3D%20size-1)%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%3D%20rear%2B1)%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20Checks%20whether%20Deque%20is%20empty%20or%20not.%0A%20%20%20%20boolean%20isEmpty%20()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20return%20(front%20%3D%3D%20-1)%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20Inserts%20an%20element%20at%20front%0A%20%20%20%20void%20insertfront(int%20key)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20check%20whether%20Deque%20if%20%20full%20or%20not%0A%20%20%20%20%20%20%20%20if%20(isFull())%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22Overflow%22)%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20queue%20is%20initially%20empty%0A%20%20%20%20%20%20%20%20if%20(front%20%3D%3D%20-1)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20front%20is%20at%20first%20position%20of%20queue%0A%20%20%20%20%20%20%20%20else%20if%20(front%20%3D%3D%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%20size%20-%201%20%3B%0A%20%20%0A%20%20%20%20%20%20%20%20else%20%2F%2F%20decrement%20front%20end%20by%20\u20191\u2019%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%20front-1%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20insert%20current%20element%20into%20Deque%0A%20%20%20%20%20%20%20%20arr%5Bfront%5D%20%3D%20key%20%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20function%20to%20inset%20element%20at%20rear%20end%0A%20%20%20%20%2F%2F%20of%20Deque.%0A%20%20%20%20void%20insertrear(int%20key)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20(isFull())%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%20Overflow%20%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20queue%20is%20initially%20empty%0A%20%20%20%20%20%20%20%20if%20(front%20%3D%3D%20-1)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20rear%20is%20at%20last%20position%20of%20queue%0A%20%20%20%20%20%20%20%20else%20if%20(rear%20%3D%3D%20size-1)%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%200%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20increment%20rear%20end%20by%20\u20191\u2019%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%20rear%2B1%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20insert%20current%20element%20into%20Deque%0A%20%20%20%20%20%20%20%20arr%5Brear%5D%20%3D%20key%20%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20Deletes%20element%20at%20front%20end%20of%20Deque%0A%20%20%20%20void%20deletefront()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20check%20whether%20Deque%20is%20empty%20or%20not%0A%20%20%20%20%20%20%20%20if%20(isEmpty())%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22Queue%20Underflow%5Cn%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20Deque%20has%20only%20one%20element%0A%20%20%20%20%20%20%20%20if%20(front%20%3D%3D%20rear)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20back%20to%20initial%20position%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(front%20%3D%3D%20size%20-1)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%200%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%2F%2F%20increment%20front%20by%20\u20191\u2019%20to%20remove%20current%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20front%20value%20from%20Deque%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%20front%2B1%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20Delete%20element%20at%20rear%20end%20of%20Deque%0A%20%20%20%20void%20deleterear()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20if%20(isEmpty())%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%20Underflow%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20Deque%20has%20only%20one%20element%0A%20%20%20%20%20%20%20%20if%20(front%20%3D%3D%20rear)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20front%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%20-1%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%20if%20(rear%20%3D%3D%200)%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%20size-1%3B%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20rear%20%3D%20rear-1%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20Returns%20front%20element%20of%20Deque%0A%20%20%20%20int%20getFront()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20check%20whether%20Deque%20is%20empty%20or%20not%0A%20%20%20%20%20%20%20%20if%20(isEmpty())%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%20Underflow%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1%20%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20arr%5Bfront%5D%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20function%20return%20rear%20element%20of%20Deque%0A%20%20%20%20int%20getRear()%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20check%20whether%20Deque%20is%20empty%20or%20not%0A%20%20%20%20%20%20%20%20if(isEmpty()%20%7C%7C%20rear%20%3C%200)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.out.println(%22%20Underflow%5Cn%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20-1%20%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20arr%5Brear%5D%3B%0A%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%2F%2F%20Driver%20program%20to%20test%20above%20function%0A%20%20%20%20public%20static%20void%20main(String%5B%5D%20args)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20Deque%20dq%20%3D%20new%20Deque(5)%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20System.out.println(%22Insert%20element%20at%20rear%20end%20%20%3A%205%20%22)%3B%0A%20%20%20%20%20%20%20%20%20dq.insertrear(5)%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20System.out.println(%22insert%20element%20at%20rear%20end%20%3A%2010%20%22)%3B%0A%20%20%20%20%20%20%20%20%20dq.insertrear(10)%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20System.out.println(%22get%20rear%20element%20%3A%20%22%2B%20dq.getRear())%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20dq.deleterear()%3B%0A%20%20%20%20%20%20%20%20%20System.out.println(%22After%20delete%20rear%20element%20new%20rear%20become%20%3A%20%22%20%2B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dq.getRear())%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20System.out.println(%22inserting%20element%20at%20front%20end%22)%3B%0A%20%20%20%20%20%20%20%20%20dq.insertfront(15)%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20System.out.println(%22get%20front%20element%3A%20%22%20%2Bdq.getFront())%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20dq.deletefront()%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20System.out.println(%22After%20delete%20front%20element%20new%20front%20become%20%3A%20%22%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B%20%20dq.getFront())%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%7D%0A%7D%0A\u201d message=\u201d\u201d highlight=\u201d\u201d provider=\u201dmanual\u201d\/]\n<h3 id=\"output\"><span style=\"color: #008000;\"><strong>Output:<\/strong><\/span><\/h3>\n<pre>insert element at rear end  : 5\r\ninsert element at rear end : 10\r\nget rear element : 10\r\nAfter delete rear element new rear become : 5\r\ninserting element at front end\r\nget front element : 15\r\nAfter delete front element new front become : 5\r\n<\/pre>\n<p><span style=\"color: #003366;\"><strong>Time Complexity:<\/strong> <\/span>Time complexity of all operations like insertfront(), insertlast(), deletefront(), deletelast() is <strong>O(1)<\/strong>.<\/p>\n[ad type=\u201dbanner\u201d]\n","protected":false},"excerpt":{"rendered":"<p>Implementation of Deque using circular array &#8211; Deque or Double Ended Queue is a generalized version of Queue data structure.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[73012,80124],"tags":[83811,83816,83814,83815,83813,83817,83812,83818],"class_list":["post-27020","post","type-post","status-publish","format-standard","hentry","category-data-structures","category-queue","tag-circular-array-deque-java","tag-deque-implementation-c-using-arrays","tag-deque-implementation-in-c","tag-deque-implementation-in-c-using-linked-list","tag-deque-implementation-java","tag-deque-implementation-using-doubly-linked-list","tag-deque-using-array-in-java","tag-java-deque-implementation-code"],"_links":{"self":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/27020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/comments?post=27020"}],"version-history":[{"count":0,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/posts\/27020\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/media?parent=27020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/categories?post=27020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wikitechy.com\/technology\/wp-json\/wp\/v2\/tags?post=27020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}