{"id":102632,"date":"2025-03-22T09:51:53","date_gmt":"2025-03-22T05:21:53","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/queue-4imn\/"},"modified":"2025-03-22T09:51:53","modified_gmt":"2025-03-22T05:21:53","slug":"queue-4imn","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/queue-4imn\/","title":{"rendered":"\u0635\u0641 &#8211; \u062c\u0627\u0645\u0639\u0647 dev"},"content":{"rendered":"<div data-article-id=\"2349367\" id=\"article-body\">\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>from collections import deque\nimport heapq\n\n# Basic Queue Implementation using deque\nclass Queue:\n    def __init__(self):\n        self.queue = deque()\n\n    def enqueue(self, item):\n        \"\"\"Enqueue an item to the queue.\"\"\"\n        self.queue.append(item)\n\n    def dequeue(self):\n        \"\"\"Dequeue an item from the queue. Returns None if the queue is empty.\"\"\"\n        if not self.is_empty():\n            return self.queue.popleft()\n        return None\n\n    def front(self):\n        \"\"\"Return the front item of the queue.\"\"\"\n        if not self.is_empty():\n            return self.queue[0]\n        return None\n\n    def is_empty(self):\n        \"\"\"Check if the queue is empty.\"\"\"\n        return len(self.queue) == 0\n\n    def size(self):\n        \"\"\"Return the size of the queue.\"\"\"\n        return len(self.queue)\n\n    def clear(self):\n        \"\"\"Clear all items in the queue.\"\"\"\n        self.queue.clear()\n\n    def print_queue(self):\n        \"\"\"Print all elements in the queue.\"\"\"\n        print(list(self.queue))\n\n\n# Queue Implementation using Two Stacks\nclass QueueWithTwoStacks:\n    def __init__(self):\n        self.stack1 = Stack()\n        self.stack2 = Stack()\n\n    def enqueue(self, item):\n        \"\"\"Enqueue an item to the queue.\"\"\"\n        self.stack1.push(item)\n\n    def dequeue(self):\n        \"\"\"Dequeue an item from the queue.\"\"\"\n        if self.stack2.is_empty():\n            while not self.stack1.is_empty():\n                self.stack2.push(self.stack1.pop())\n        return self.stack2.pop() if not self.stack2.is_empty() else None\n\n\n# Circular Queue Implementation (Fixed-size Queue)\nclass CircularQueue:\n    def __init__(self, capacity):\n        self.capacity = capacity\n        self.queue = [None] * capacity\n        self.front = self.rear = -1\n\n    def enqueue(self, item):\n        if (self.rear + 1) % self.capacity == self.front:\n            print(\"Queue is full\")\n            return\n        if self.front == -1:  # First element\n            self.front = 0\n        self.rear = (self.rear + 1) % self.capacity\n        self.queue[self.rear] = item\n\n    def dequeue(self):\n        if self.front == -1:\n            print(\"Queue is empty\")\n            return None\n        item = self.queue[self.front]\n        if self.front == self.rear:  # Single element\n            self.front = self.rear = -1\n        else:\n            self.front = (self.front + 1) % self.capacity\n        return item\n\n    def peek(self):\n        if self.front == -1:\n            print(\"Queue is empty\")\n            return None\n        return self.queue[self.front]\n\n    def is_empty(self):\n        return self.front == -1\n\n    def size(self):\n        if self.front == -1:\n            return 0\n        return (self.rear - self.front + 1) % self.capacity\n\n\n# Priority Queue Implementation using a heap\nclass PriorityQueue:\n    def __init__(self):\n        self.queue = []\n        self.counter = 0  # To maintain order for equal priorities\n\n    def enqueue(self, item, priority):\n        heapq.heappush(self.queue, (priority, self.counter, item))\n        self.counter += 1\n\n    def dequeue(self):\n        if self.is_empty():\n            return None\n        return heapq.heappop(self.queue)[-1]\n\n    def peek(self):\n        if self.is_empty():\n            return None\n        return self.queue[0][-1]\n\n    def is_empty(self):\n        return len(self.queue) == 0\n\n    def size(self):\n        return len(self.queue)\n\n\n# Helper Function: Reverse a Queue using a stack\ndef reverse_queue(queue):\n    \"\"\"\n    Reverse the elements of a queue using a stack.\n    :param queue: The queue (using deque).\n    :return: The reversed queue.\n    \"\"\"\n    stack = []\n    # Dequeue all elements and push them onto a stack\n    while queue:\n        stack.append(queue.popleft())\n\n    # Push all elements back into the queue\n    while stack:\n        queue.append(stack.pop())\n\n    return queue\n\n\n# Example Use Cases\n\n# 1. Basic Queue operations\nqueue = Queue()\nqueue.enqueue(10)\nqueue.enqueue(20)\nqueue.enqueue(30)\nprint(\"Queue operations:\")\nprint(queue.front())  # Output: 10\nprint(queue.dequeue()) # Output: 10\nprint(queue.size())    # Output: 2\nqueue.print_queue()    # Output: [20, 30]\n\n# 2. Queue with Two Stacks\nqueue2 = QueueWithTwoStacks()\nqueue2.enqueue(10)\nqueue2.enqueue(20)\nqueue2.enqueue(30)\nprint(\"\\nQueueWithTwoStacks operations:\")\nprint(queue2.dequeue())  # Output: 10\nprint(queue2.dequeue())  # Output: 20\n\n# 3. Circular Queue operations\ncircular_queue = CircularQueue(3)\ncircular_queue.enqueue(10)\ncircular_queue.enqueue(20)\ncircular_queue.enqueue(30)\nprint(\"\\nCircularQueue operations:\")\nprint(circular_queue.dequeue())  # Output: 10\ncircular_queue.enqueue(40)\nprint(circular_queue.peek())    # Output: 20\nprint(circular_queue.size())    # Output: 3\n\n# 4. Priority Queue operations\npriority_queue = PriorityQueue()\npriority_queue.enqueue(\"task1\", 2)\npriority_queue.enqueue(\"task2\", 1)\npriority_queue.enqueue(\"task3\", 3)\nprint(\"\\nPriorityQueue operations:\")\nprint(priority_queue.dequeue())  # Output: task2\nprint(priority_queue.peek())     # Output: task1\n\n# 5. Reverse a Queue\nqueue = deque([1, 2, 3, 4, 5])\nprint(\"\\nReversing the queue:\")\nreversed_queue = reverse_queue(queue)\nprint(reversed_queue)  # Output: deque([5, 4, 3, 2, 1])\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>from collections import deque import heapq # Basic Queue Implementation using deque class Queue: def __init__(self): self.queue = deque() def enqueue(self, item): &#8220;&#8221;&#8221;Enqueue an item to the queue.&#8221;&#8221;&#8221; self.queue.append(item) def dequeue(self): &#8220;&#8221;&#8221;Dequeue an item from the queue. Returns None if the queue is empty.&#8221;&#8221;&#8221; if not self.is_empty(): return self.queue.popleft() return None def front(self): &#8220;&#8221;&#8221;Return the &hellip;<\/p>\n","protected":false},"author":2,"featured_media":100023,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-102632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/102632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=102632"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/102632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/100023"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=102632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=102632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=102632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}