{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ADT - Stack\n", "Push and pop methods. \n", "Primitively, we consider the stack and queue ADTs with a simple array. \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "stack = [None for index in range(0,10)]\n", "basePointer = 0\n", "topPointer = -1\n", "stackFull = 10\n", "\n", "def push(item):\n", " global stack, topPointer\n", " topPointer += 1\n", " if topPointer >= stackFull: \n", " print(\"ERROR Cannot insert more.\")\n", " return\n", " stack[topPointer] = item\n", " print(stack)\n", "def pop():\n", " global stack, topPointer\n", " if topPointer < basePointer:\n", " print(\"ERROR List is empty, cannot pop.\")\n", " return\n", " itemPopped = stack[topPointer]\n", " print(f\"I popped this {itemPopped}\")\n", " stack[topPointer] = None\n", " topPointer -= 1\n", " print(stack)\n", "def test():\n", " push(1)\n", " push(2)\n", " push(69)\n", "\n", " pop()\n", " pop()\n", "\n", " print(stack)\n", "\n", " pop()\n", " pop()\n", "\n", "test()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ADT - Queue\n", "Enqueue and dequeue methods." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "queue = [None for index in range(0, 10)]\n", "frontPointer = 0\n", "rearPointer = -1\n", "queueLength = 0\n", "queueFull = 10\n", "def dequeue():\n", " global queue, queueLength, queueFull, rearPointer, frontPointer\n", " if queueLength == 0:\n", " print(\"ERR:: Cannot dequeue an empty queue!\") \n", " return\n", " item = queue[frontPointer]\n", " queue[frontPointer] = None\n", " frontPointer += 1\n", " print(f\"Dequeued element {item}\")\n", " return\n", " \n", "def enqueue(item):\n", " global queue, queueLength, queueFull, rearPointer\n", " if queueLength < queueFull:\n", " if rearPointer < len(queue) - 1:\n", " rearPointer += 1\n", " else:\n", " rearPointer = 0\n", " queueLength += 1\n", " queue[rearPointer] = item\n", " print(queue)\n", " return\n", " print(\"ERROR queue length exceeded!\")\n", " return\n", "for i in range(13):\n", " enqueue(10 * i)\n", "dequeue()\n", "dequeue()\n", "dequeue()\n", "print(queue)\n" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.8" } }, "nbformat": 4, "nbformat_minor": 2 }