diff options
author | tslee | 2014-11-27 17:17:59 +0530 |
---|---|---|
committer | tslee | 2014-11-27 17:17:59 +0530 |
commit | 6e3407ba85ae84e1cee1ae0c972fd32c5504d827 (patch) | |
tree | b89808101c39b1db1e3793eada2c8b702f856606 /Mastering_C/chapter12.ipynb | |
parent | 36a03d6d76bac315dba73b2ba9555c7e3fe0234f (diff) | |
download | Python-Textbook-Companions-6e3407ba85ae84e1cee1ae0c972fd32c5504d827.tar.gz Python-Textbook-Companions-6e3407ba85ae84e1cee1ae0c972fd32c5504d827.tar.bz2 Python-Textbook-Companions-6e3407ba85ae84e1cee1ae0c972fd32c5504d827.zip |
added books
Diffstat (limited to 'Mastering_C/chapter12.ipynb')
-rw-r--r-- | Mastering_C/chapter12.ipynb | 4076 |
1 files changed, 4076 insertions, 0 deletions
diff --git a/Mastering_C/chapter12.ipynb b/Mastering_C/chapter12.ipynb new file mode 100644 index 00000000..fd18aaec --- /dev/null +++ b/Mastering_C/chapter12.ipynb @@ -0,0 +1,4076 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:0f4233c9bc3c7a3995f155be01ebee4b829ac86b3935e6b7d37705fb0fea5376" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Chapter 12: Data Structures" + ] + }, + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Example 12.1, page no. 442" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy\n", + "arr = numpy.zeros((2, 2, 2))\n", + "\n", + "print \"Reading the elements of an array: \"\n", + "for i in range(2):\n", + " for j in range(2):\n", + " for k in range(2):\n", + " arr[i][j][k] = int(raw_input())\n", + "\n", + "print \"Displaying the elements of an array: \"\n", + "for i in range(2):\n", + " print \"\\n\\t\"\n", + " for j in range(2):\n", + " for k in range(2):\n", + " print \"\\t %3d \" %(arr[i][j][k]),\n", + " print \"\\n\\t\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reading the elements of an array: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "25\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "26\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "13\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "71\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "8\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Displaying the elements of an array: \n", + "\n", + "\t\n", + "\t 15 \t 25 \n", + "\t\n", + "\t 26 \t 13 \n", + "\t\n", + "\n", + "\t\n", + "\t 71 \t 9 \n", + "\t\n", + "\t 1 \t 8 \n", + "\t\n" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.2, page no. 442" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "str1 = raw_input(\"Input the first string: \")\n", + "str2 = raw_input(\"Input the second string: \")\n", + "print \"The concatenated string is ...\"\n", + "print str1+str2" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Input the first string: Tejaswi \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Input the second string: Venugopal\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The concatenated string is ...\n", + "Tejaswi Venugopal\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.3, page no. 443" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class record:\n", + " name = ''\n", + " regno = ''\n", + " avg = 0.0\n", + " rank = 0\n", + "i = 0\n", + "students = []\n", + "while True:\n", + " print \"Processing student %d record...\" %(i+1)\n", + " print \"Student name ?(END to terminate): \"\n", + " stud = record()\n", + " stud.name = raw_input()\n", + " if stud.name == 'END':\n", + " break\n", + " else:\n", + " stud.regno = raw_input(\"Reg. no? \")\n", + " stud.avg = float(raw_input(\"Average marks? \"))\n", + " students.append(stud)\n", + " i+=1\n", + "n = i\n", + "for i in range(n-1):\n", + " for j in range(i+1, n):\n", + " if students[i].avg < students[j].avg:\n", + " students[i], students[j] = students[j], students[i]\n", + "for i in range(n):\n", + " students[i].rank = i+1\n", + "print \"Student records after assigning ranks: \"\n", + "print \"%s%20s%20s%20s\" %(\"Name\",\"REGISTER_NUMBER\",\"AVERAGE\",\"RANK\")\n", + "print \"------------------------------------------------------------------\"\n", + "for i in range(n):\n", + " print students[i].name, \"\\t\\t\", students[i].regno, \"\\t\\t\\t\", students[i].avg, \"\\t\\t\\t\", students[i].rank" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 1 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Asha\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak001\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 67.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 2 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Bina\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak003\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 34.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 3 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Anand\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak004\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 67.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 4 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Sudeep\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak005\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 78.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 5 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Tejaswi\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak006\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 89.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 6 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Maya\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak007\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 89.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 7 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Prakash\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak008\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 89.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 8 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Raju\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak009\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 82.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 9 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Geetha\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak010\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 85.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 10 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Gopi\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak011\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 45.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 11 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Ganesh\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reg. no? ak012\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Average marks? 89.00\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Processing student 12 record...\n", + "Student name ?(END to terminate): \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "END\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Student records after assigning ranks: \n", + "Name REGISTER_NUMBER AVERAGE RANK\n", + "------------------------------------------------------------------\n", + "Tejaswi \t\tak006 \t\t\t89.0 \t\t\t1\n", + "Maya \t\tak007 \t\t\t89.0 \t\t\t2\n", + "Prakash \t\tak008 \t\t\t89.0 \t\t\t3\n", + "Ganesh \t\tak012 \t\t\t89.0 \t\t\t4\n", + "Geetha \t\tak010 \t\t\t85.0 \t\t\t5\n", + "Raju \t\tak009 \t\t\t82.0 \t\t\t6\n", + "Sudeep \t\tak005 \t\t\t78.0 \t\t\t7\n", + "Anand \t\tak004 \t\t\t67.0 \t\t\t8\n", + "Asha \t\tak001 \t\t\t67.0 \t\t\t9\n", + "Gopi \t\tak011 \t\t\t45.0 \t\t\t10\n", + "Bina \t\tak003 \t\t\t34.0 \t\t\t11\n" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.4, page no. 446" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy\n", + "arr = numpy.zeros((3,3))\n", + "print \"Reading the elements of 2-D array: \"\n", + "for i in range(3):\n", + " for j in range(3):\n", + " arr[i][j] = int(raw_input())\n", + "print \"Displaying the elements of 2-D array: \"\n", + "p = arr\n", + "for i in range(3):\n", + " for j in range(3):\n", + " print \"arr[%d][%d] = %d\" %(i, j, p[i][j]),\n", + " print \"\\tAddress of arr[%d][%d] = %d\" %(i, j, id(p[i][j]))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Reading the elements of 2-D array: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "8\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "9\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Displaying the elements of 2-D array: \n", + "arr[0][0] = 1 \tAddress of arr[0][0] = 52403744\n", + "arr[0][1] = 2 \tAddress of arr[0][1] = 57791200\n", + "arr[0][2] = 3 \tAddress of arr[0][2] = 55892528\n", + "arr[1][0] = 4 \tAddress of arr[1][0] = 55892528\n", + "arr[1][1] = 5 \tAddress of arr[1][1] = 55892528\n", + "arr[1][2] = 6 \tAddress of arr[1][2] = 51486976\n", + "arr[2][0] = 7 \tAddress of arr[2][0] = 58587952\n", + "arr[2][1] = 8 \tAddress of arr[2][1] = 50218032\n", + "arr[2][2] = 9 \tAddress of arr[2][2] = 50218032\n" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.5, page no. 449" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import sys\n", + "\n", + "class node:\n", + " def __init__(self, data=0, link=None):\n", + " self.data = data\n", + " self.link = link\n", + "\n", + "start = None\n", + " \n", + "def add_front(data):\n", + " global start\n", + " tmp = node(data)\n", + " if(start == None):\n", + " start = tmp\n", + " else:\n", + " tmp.link = start\n", + " start = tmp\n", + "\n", + "def del_pos(pos):\n", + " global start\n", + " if (pos == 0):\n", + " tmp = start\n", + " start = start.link\n", + " return\n", + " q = start\n", + " count = 1\n", + " while(q.link != None):\n", + " if(count == pos):\n", + " tmp = q.link\n", + " q.link = tmp.link\n", + " return\n", + " count += 1\n", + " q = q.link\n", + " print \"\\n\\nThere is no element at %d position\" %pos\n", + " \n", + "def del_elem(data):\n", + " global start\n", + " if (start.data == data):\n", + " tmp = start\n", + " start = start.link\n", + " return\n", + " q = start\n", + " while(q.link.link != None):\n", + " if(q.link.data == data):\n", + " tmp = q.link\n", + " q.link = tmp.link\n", + " return\n", + " q = q.link\n", + " if(q.link.data == data):\n", + " tmp = q.link;\n", + " q.link = None\n", + " return\n", + " print \"\\n\\nThere is no element whose value is %d\" %data\n", + "\n", + "def display_list():\n", + " global start\n", + " if(start == None):\n", + " print \"\\n\\nList empty\"\n", + " return\n", + " q=start\n", + " print \"\\nThe List is...\"\n", + " while(q != None):\n", + " print q.data,\n", + " q = q.link\n", + " print \"\\n\"\n", + "\n", + "def get_data():\n", + " data = int(raw_input(\"Enter the data: \"))\n", + " return data\n", + "\n", + "while(1):\n", + " print \"\\n1.Insert at the beginning of the list\"\n", + " print \"2.Delete an element at a give position\"\n", + " print \"3.Delete an element with a give value\"\n", + " print \"4.Quit\"\n", + " print \"Choice: \",\n", + " choice =int(raw_input())\n", + " if choice == 1:\n", + " data = get_data()\n", + " add_front(data)\n", + " elif choice == 2:\n", + " if (start == None):\n", + " print \"\\nList empty\"\n", + " continue\n", + " print \"\\n\\nEnter the position:\"\n", + " pos = int(raw_input())\n", + " del_pos(pos)\n", + " elif choice == 3:\n", + " if (start == None):\n", + " print \"\\nList empty\"\n", + " continue\n", + " data = get_data()\n", + " del_elem(data)\n", + " elif choice == 4:\n", + " break\n", + " display_list()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "The List is...\n", + "0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: 1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "The List is...\n", + "1 0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: 2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "The List is...\n", + "2 1 0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: 3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "The List is...\n", + "3 2 1 0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: 4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "The List is...\n", + "4 3 2 1 0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "\n", + "Enter the position:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "The List is...\n", + "4 2 1 0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: 1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "The List is...\n", + "4 2 0 \n", + "\n", + "\n", + "1.Insert at the beginning of the list\n", + "2.Delete an element at a give position\n", + "3.Delete an element with a give value\n", + "4.Quit\n", + "Choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.6, page no. 454" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import sys\n", + "\n", + "class node:\n", + " def __init__(self, info=None, link=None):\n", + " self.info = info\n", + " self.link = link\n", + "\n", + "last = None\n", + "class Circular_Linked:\n", + " def create(self, num):\n", + " global last\n", + " q = node()\n", + " tmp = node()\n", + " tmp.info = num\n", + " if (last == None):\n", + " last = tmp\n", + " tmp.link = last\n", + " else:\n", + " tmp.link = last.link\n", + " last.link = tmp\n", + " last = tmp\n", + "\n", + " def insert(self, num, pos):\n", + " global last\n", + " q = node()\n", + " tmp = node()\n", + " q = last.link\n", + " for i in range(0, pos-1):\n", + " q = q.link\n", + " if (q == last.link):\n", + " print \"There are less than \", pos, \" elements\"\n", + " return\n", + " tmp.link = q.link\n", + " tmp.info = num\n", + " q.link = tmp\n", + " if(q==last):\n", + " last=tmp\n", + "\n", + " def delete(self):\n", + " global last\n", + " if(last == None):\n", + " print \"LIST EMPTY - CANNOT DELETE\"\n", + " return\n", + " print \"Data item to be deleted:\"\n", + " num = int(raw_input())\n", + " q = node()\n", + " tmp = node()\n", + " if( last.link == last and last.info == num):\n", + " tmp = last\n", + " last = None\n", + " return\n", + " q = last.link\n", + " if(q.info == num):\n", + " tmp = q\n", + " last.link = q.link\n", + " return\n", + " while(q.link != last):\n", + " if(q.link.info == num):\n", + " tmp = q.link\n", + " q.link = tmp.link\n", + " print num, \" deleted\"\n", + " q = q.link\n", + " if(q.link.info == num):\n", + " tmp = q.link\n", + " q.link = last.link\n", + " last = q\n", + " return\n", + " print \"Element not found\"\n", + "\n", + " def display(self):\n", + " global last\n", + " q = node()\n", + " if(last == None):\n", + " print \"List is empty\"\n", + " return\n", + " q = last.link\n", + " print \"List is:\"\n", + " while(q != last):\n", + " print q.info,\n", + " q = q.link\n", + " print last.info\n", + " \n", + "co = Circular_Linked()\n", + "while(1):\n", + " print \"\\n1.Create Circular Linked List\"\n", + " print \"2.Insert an item\"\n", + " print \"3.Delete an item\"\n", + " print \"4.STOP\"\n", + " print \"Enter your choice:\"\n", + " choice = int(raw_input())\n", + " if choice == 1:\n", + " print \"How many nodes you want:\",\n", + " n = int(raw_input())\n", + " for i in range(n):\n", + " print \"\\nEnter the element:\",\n", + " m = int(raw_input())\n", + " co.create(m)\n", + " elif choice == 2:\n", + " print \"\\nEnter the element:\",\n", + " m = int(raw_input())\n", + " print \"\\nEnter the position after which this element is inserted:\",\n", + " po = int(raw_input())\n", + " co.insert(m,po)\n", + " elif choice == 3:\n", + " co.delete()\n", + " elif choice == 4:\n", + " break\n", + " else:\n", + " print \"Error - Try again\"\n", + " co.display()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "1.Create Circular Linked List\n", + "2.Insert an item\n", + "3.Delete an item\n", + "4.STOP\n", + "Enter your choice:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "How many nodes you want:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "Enter the element:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "Enter the element:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "Enter the element:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "Enter the element:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " List is:\n", + "1 2 3 4\n", + "\n", + "1.Create Circular Linked List\n", + "2.Insert an item\n", + "3.Delete an item\n", + "4.STOP\n", + "Enter your choice:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "How many nodes you want:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "Enter the element:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "5\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " List is:\n", + "1 2 3 4 5\n", + "\n", + "1.Create Circular Linked List\n", + "2.Insert an item\n", + "3.Delete an item\n", + "4.STOP\n", + "Enter your choice:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Enter the element:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "Enter the position after which this element is inserted:" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " List is:\n", + "1 0 2 3 4 5\n", + "\n", + "1.Create Circular Linked List\n", + "2.Insert an item\n", + "3.Delete an item\n", + "4.STOP\n", + "Enter your choice:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Data item to be deleted:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 deleted\n", + "Element not found\n", + "List is:\n", + "1 2 3 4 5\n", + "\n", + "1.Create Circular Linked List\n", + "2.Insert an item\n", + "3.Delete an item\n", + "4.STOP\n", + "Enter your choice:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Data item to be deleted:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "7\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Element not found\n", + "List is:\n", + "1 2 3 4 5\n", + "\n", + "1.Create Circular Linked List\n", + "2.Insert an item\n", + "3.Delete an item\n", + "4.STOP\n", + "Enter your choice:\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.7, page no. 461" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "MAXSIZE = 100\n", + "\n", + "class stack:\n", + " def __init__(self):\n", + " self.stack = []\n", + " self.top = -1\n", + "\n", + "def push(pu):\n", + " if(pu.top == MAXSIZE-1):\n", + " print \"The stack is full\"\n", + " else:\n", + " print \"Enter the element to be inserted: \"\n", + " item = int(raw_input())\n", + " pu.stack.append(item)\n", + " pu.top += 1\n", + "\n", + "def pop(po):\n", + " if(po.top == -1):\n", + " print \"Stack is empty\"\n", + " else:\n", + " item = po.stack[po.top]\n", + " po.top-=1\n", + " print \"The popped element is: %d\" %item\n", + "\n", + "\n", + "def display(pt):\n", + " if(pt.top == -1):\n", + " print \"Stack is empty\"\n", + " else:\n", + " print \"The element(s) of the stack are: \"\n", + " i = pt.top\n", + " while(i>=0):\n", + " print \"%d\" %pt.stack[i],\n", + " i-=1\n", + "\n", + "ps = stack()\n", + "ch = 'y'\n", + "\n", + "while(1):\n", + " print \"\\n1. Push into the stack\"\n", + " print \"2. POP\"\n", + " print \"3. View elements of the stack\"\n", + " print \"4. Exit\"\n", + " print \"Enter your choice: \"\n", + " choice = int(raw_input())\n", + " if(choice == 1):\n", + " push(ps)\n", + " elif(choice == 2):\n", + " pop(ps)\n", + " elif(choice == 3):\n", + " display(ps)\n", + " elif(choice == 4):\n", + " break\n", + " else:\n", + " print \"Invalid Choice\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the element to be inserted: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "12\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the element to be inserted: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "23\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the element to be inserted: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "67\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The popped element is: 67\n", + "\n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the element to be inserted: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "88\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The element(s) of the stack are: \n", + "67 23 12 \n", + "1. Push into the stack\n", + "2. POP\n", + "3. View elements of the stack\n", + "4. Exit\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.8, page no. 463" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class node:\n", + " def __init__(self, link=None):\n", + " self.data = None\n", + " self.link = link\n", + " \n", + "start = None\n", + "\n", + "\n", + "def push(top):\n", + " new = node()\n", + " print \"Enter element to be pushed: \",\n", + " pushed_item = int(raw_input())\n", + " new.data = pushed_item\n", + " new.link = top\n", + " top = new\n", + " return top\n", + "\n", + "def pop(top):\n", + " tmp = node()\n", + " if(top == None):\n", + " print \"Stack is empty...\" \n", + " else:\n", + " tmp = top\n", + " print \"Popped item is: \", tmp.data\n", + " top = top.link\n", + " tmp.link = None\n", + " return top\n", + "\n", + "def display(top):\n", + " if(top == None):\n", + " print \"Stack is empty...\"\n", + " else:\n", + " while(top.link != None):\n", + " print top.data,\n", + " top = top.link\n", + " \n", + "Top = node()\n", + "while(1):\n", + " print \"\\n1.PUSH\"\n", + " print \"2.POP\"\n", + " print \"3.END\"\n", + " print \"Enter your choice: \",\n", + " choice = int(raw_input())\n", + " if choice == 1:\n", + " Top = push(Top)\n", + " print \"STACK after pushing: \"\n", + " display(Top)\n", + " elif choice == 2:\n", + " Top=pop(Top)\n", + " print \"STACK after popping: \"\n", + " display(Top)\n", + " elif choice == 3:\n", + " print \"End of comutation\"\n", + " break\n", + " else:\n", + " print \"Invalid Choice\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter element to be pushed: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "23\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " STACK after pushing: \n", + "23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter element to be pushed: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "12\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " STACK after pushing: \n", + "12 23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter element to be pushed: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "67\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " STACK after pushing: \n", + "67 12 23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Popped item is: 67\n", + "STACK after popping: \n", + "12 23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Popped item is: 12\n", + "STACK after popping: \n", + "23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter element to be pushed: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "88\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " STACK after pushing: \n", + "88 23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Popped item is: 88\n", + "STACK after popping: \n", + "23 \n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Popped item is: 23\n", + "STACK after popping: \n", + "\n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Popped item is: None\n", + "STACK after popping: \n", + "Stack is empty...\n", + "\n", + "1.PUSH\n", + "2.POP\n", + "3.END\n", + "Enter your choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " End of comutation\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.9, page no. 467" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "stck = []\n", + "\n", + "def push(sp,ch):\n", + " if sp==100:\n", + " print \"Error : Stack overflow\"\n", + " else:\n", + " sp += 1\n", + " stck.append(ch)\n", + "\n", + "def pop(sp):\n", + " if sp < 0:\n", + " print \"Error : Stack underflow\"\n", + " return 0\n", + " else:\n", + " sp -= 1\n", + " return stck[sp+1]\n", + "\n", + "def alpha(ch):\n", + " if (ch>='A' and ch<=\"Z\") or (ch>='a' and ch<=\"z\"):\n", + " return True\n", + " else:\n", + " return False\n", + "\n", + "def num(ch):\n", + " if ch>='0' and ch<=\"9\":\n", + " return True\n", + " else:\n", + " return False\n", + "\n", + "def oper(ch):\n", + " oparray = ['+','-','*','/','^']\n", + " if ch in oparray:\n", + " return True\n", + " else:\n", + " return False\n", + " \n", + "def precedence(ch):\n", + " if ch=='(':\n", + " i = 0\n", + " elif ch=='+' or ch=='-':\n", + " i = 1\n", + " elif ch=='*' or ch=='/':\n", + " i = 2\n", + " elif ch=='^':\n", + " i = 3\n", + " return i\n", + "\n", + "def printerror(n,ifp):\n", + " if n==1:\n", + " print \"Error_1_: Missing operator\",\n", + " elif n==2:\n", + " print \"Error_2_: Missing Operand\",\n", + " elif n==3:\n", + " print \"Error_3_: Mismatched parentehses\",\n", + " elif n==4:\n", + " print \"Error_4_: Illegal character in expression\",\n", + " elif n==5:\n", + " print \"Error_5_: Multiletter variable\",\n", + " print \"Column %2d\"%ifp\n", + " \n", + "\n", + "def parse (infix,suffix,error):\n", + " ch =''\n", + " last = '('\n", + " i = 0\n", + " sp=-1\n", + " bracket = 1\n", + " ifp = 0\n", + " sfp = 0\n", + " \n", + " push(sp,'(')\n", + " \n", + " while True:\n", + " while infix[i] == \" \":\n", + " i += 1\n", + " ifp = i\n", + " ch = infix[ifp]\n", + " \n", + " if ch == \"(\":\n", + " if alpha(last) or num(last) or last==')':\n", + " error = 1\n", + " printerror(1,ifp+1)\n", + " bracket +=1 \n", + " push(sp,ch)\n", + " elif ch==\"+\" or ch==\"-\" or ch==\"*\" or ch==\"/\" or ch==\"^\":\n", + " if oper(last) or (not alpha(last) and not num(last) and last!=\")\"):\n", + " error=1\n", + " printerror(2,ifp+1)\n", + " while precedence(stck[sp]) >= precedence(ch):\n", + " suffix.append(pop(sp))\n", + " sfp+=1\n", + " push(sp,ch)\n", + " elif ch==\")\":\n", + " if oper(last):\n", + " error=1\n", + " printerror(2,ifp+1)\n", + " if last==\"(\":\n", + " error=1\n", + " printerror(2,ifp+1)\n", + " printerror(1,ifp+1)\n", + " while stck[sp] != \"(\" and sp > 0:\n", + " suffix.append(pop(sp))\n", + " sfp += 1\n", + " sp -= 1\n", + " bracket -= 1\n", + " elif ch == ' ':\n", + " while infix[ifp+1] == \" \" and not infix[ifp] :\n", + " ifp += 1\n", + " else:\n", + " if alpha(last) or num(last):\n", + " error = 1 \n", + " printerror(1,ifp+1)\n", + " printerror(5,ifp+1)\n", + " if alpha(ch):\n", + " print ch,\n", + " suffix.append(infix[ifp])\n", + " sfp += 1\n", + " elif num(ch):\n", + " while num(infix[ifp]):\n", + " suffix.append(infix[ifp])\n", + " ifp += 1\n", + " sfp += 1\n", + " ifp -= 1\n", + " else:\n", + " printerror(4,ifp+1)\n", + " last = infix[ifp]\n", + " ifp += 1\n", + " i = ifp\n", + " print ifp,\n", + " try:\n", + " if not infix[ifp]:\n", + " break;\n", + " except:\n", + " break\n", + " \n", + " if bracket:\n", + " error = 1\n", + " printerror(3,ifp-1)\n", + " return infix,suffix,error\n", + "def readexpression():\n", + " i = 0\n", + " print \"The given infix expression is\"\n", + " infix = list(raw_input())\n", + " infix.append(\")\")\n", + " \n", + " return infix\n", + "\n", + "\n", + "suffix = [] \n", + "error = 0\n", + "infix = readexpression()\n", + "infix,suffix,error = parse(infix,suffix,error)\n", + "if not error:\n", + " print \"The suffix form of the given expression is \"\n", + " print suffix" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The given infix expression is\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "(a+b)\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "1 Error_3_: Mismatched parentehses Column 0\n", + "a 2 Error_3_: Mismatched parentehses Column 1\n", + "3 Error_3_: Mismatched parentehses Column 2\n", + "b 4 Error_3_: Mismatched parentehses Column 3\n", + "5 Error_3_: Mismatched parentehses Column 4\n", + "6\n" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.10, page no. 472" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "MAX = 50\n", + "queue_arr = []\n", + "rear = [-1]\n", + "front = [-1]\n", + "\n", + "def add_element():\n", + " if (rear[0] == MAX-1):\n", + " print \"Queue is full...\"\n", + " return\n", + " else:\n", + " if(front[0] == -1):\n", + " front[0] = 0\n", + " print \"Enter the new element: \"\n", + " added_item = int(raw_input())\n", + " rear[0] = rear[0]+1\n", + " queue_arr.append(added_item)\n", + "\n", + "def remove_element():\n", + " if(front[0] == -1 or front[0]>rear[0]):\n", + " print \"Queue is empty...\"\n", + " return\n", + " else:\n", + " dell = front[0]\n", + " print queue_arr[dell], \" is removed from the Queue\"\n", + " front[0] = front[0]+1\n", + "\n", + "def display():\n", + " if(front[0] == -1 or front[0]>rear[0]):\n", + " print \"Queue is empty...\"\n", + " return\n", + " else:\n", + " print \"Queue is: \"\n", + " for i in range(front[0],rear[0]+1):\n", + " print queue_arr[i],\n", + "\n", + "while(1):\n", + " print \"\\n1. Insert an element\"\n", + " print \"2. Display all the elements of the queue\"\n", + " print \"3. Remove elements from the queue\"\n", + " print \"4. Exit from the program\"\n", + " print \"Enter your choice: \"\n", + " choice = raw_input()\n", + " if choice == '1':\n", + " add_element()\n", + " elif choice == '2':\n", + " display()\n", + " elif choice == '3':\n", + " remove_element()\n", + " elif choice == '4':\n", + " break\n", + " else:\n", + " print \"Reenter the choice\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the new element: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "23\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the new element: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "34\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the new element: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "45\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "23 is removed from the Queue\n", + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "34 is removed from the Queue\n", + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the new element: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "45\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Queue is: \n", + "45 45 \n", + "1. Insert an element\n", + "2. Display all the elements of the queue\n", + "3. Remove elements from the queue\n", + "4. Exit from the program\n", + "Enter your choice: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.11, page no. 477" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class node:\n", + " def __init__(self, link=None):\n", + " self.info = None\n", + " self.link = link\n", + "\n", + "def enqueue(rear):\n", + " new_node = node()\n", + " print \"Enter the new element: \",\n", + " new_node.info = int(raw_input())\n", + " new_node.link = None\n", + " if (rear != None):\n", + " rear.link = new_node\n", + " rear = new_node\n", + " return rear\n", + "\n", + "def del_queue(f, r):\n", + " if f == None:\n", + " print \"The Queue is empty\"\n", + " else:\n", + " print \"The element removed is: \", f.info\n", + " if f != r:\n", + " f = f.link\n", + " else:\n", + " f = None\n", + " return f\n", + "\n", + "def display(fr, re):\n", + " if fr == None:\n", + " print \"The Queue is empty\"\n", + " else:\n", + " print \"The queue is: \"\n", + " while fr != re:\n", + " print fr.info,\n", + " fr = fr.link\n", + " print fr.info,\n", + "\n", + "rear = None\n", + "front = None\n", + "while(1):\n", + " print \"\\n1.Insert\"\n", + " print \"2.Delete\"\n", + " print \"3.Quit\"\n", + " print \"Enter choice: \",\n", + " choice = int(raw_input())\n", + " if choice == 1:\n", + " rear = enqueue(rear)\n", + " if front == None:\n", + " front = rear\n", + " elif choice == 2:\n", + " front = del_queue(front, rear)\n", + " if front == None:\n", + " rear = None\n", + " elif choice == 3:\n", + " break\n", + " display(front, rear)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter the new element: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "23\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The queue is: \n", + "23 \n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter the new element: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "34\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The queue is: \n", + "23 34 \n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " Enter the new element: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "45\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The queue is: \n", + "23 34 45 \n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The element removed is: 23\n", + "The queue is: \n", + "34 45 \n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The element removed is: 34\n", + "The queue is: \n", + "45 \n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The element removed is: 45\n", + "The Queue is empty\n", + "\n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " The Queue is empty\n", + "The Queue is empty\n", + "\n", + "1.Insert\n", + "2.Delete\n", + "3.Quit\n", + "Enter choice: " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 12.12, page no. 480" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy\n", + "\n", + "qsize = 50\n", + "rear = 0\n", + "front = 0\n", + "qu = numpy.zeros(50, dtype=numpy.int)\n", + "def insert():\n", + " global rear\n", + " global front\n", + " global qsize\n", + " if rear == qsize:\n", + " rear = 1\n", + " else:\n", + " rear += 1\n", + " if front != rear:\n", + " item = int(raw_input(\"Enter item to be inserted: \"))\n", + " qu[rear] = item\n", + " if front == 0:\n", + " front += 1\n", + " else:\n", + " print \"Overflow\"\n", + "def delete():\n", + " global front\n", + " global rear\n", + " global qsize\n", + " if front != 0:\n", + " item = qu[front]\n", + " if front == rear:\n", + " front = 0\n", + " rear = 0\n", + " return item\n", + " if front == qsize:\n", + " front = 1\n", + " else:\n", + " front += 1\n", + " return item\n", + " else:\n", + " print \"Underflow\"\n", + "def display():\n", + " global front\n", + " global rear\n", + " for i in range(front, rear+1):\n", + " print qu[i],\n", + "\n", + "choice = 0\n", + "while(choice != 3):\n", + " print \"\\n1 - Insert an element into Cqueue\"\n", + " print \"2 - Delete an element into Cqueue\"\n", + " print \"3 - Quit\"\n", + " choice = int(raw_input())\n", + " if choice == 1:\n", + " insert()\n", + " print \"\\nCqueue after insertion is: \"\n", + " display()\n", + " elif choice == 2:\n", + " item = delete()\n", + " print \"Item deleted id: \", item\n", + " print \"\\nCqueue after deletion is: \"\n", + " display()\n", + " else:\n", + " break" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter item to be inserted: 23\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Cqueue after insertion is: \n", + "23 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter item to be inserted: 34\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Cqueue after insertion is: \n", + "23 34 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter item to be inserted: 45\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Cqueue after insertion is: \n", + "23 34 45 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Item deleted id: 23\n", + "\n", + "Cqueue after deletion is: \n", + "34 45 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Item deleted id: 34\n", + "\n", + "Cqueue after deletion is: \n", + "45 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Item deleted id: 45\n", + "\n", + "Cqueue after deletion is: \n", + "0 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Underflow\n", + "Item deleted id: None\n", + "\n", + "Cqueue after deletion is: \n", + "0 \n", + "1 - Insert an element into Cqueue\n", + "2 - Delete an element into Cqueue\n", + "3 - Quit\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + } + ], + "prompt_number": 22 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Exmaple 9.13, page no. 484" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class node:\n", + " data = ''\n", + " next = None\n", + "class queue:\n", + " front = None\n", + " nremovals = 0\n", + "\n", + "class prique:\n", + " queues = []\n", + " nqueues = 0\n", + " npromote = 0\n", + "\n", + "def add(que, new_node):\n", + " new_node.next = 0\n", + " if not que.front:\n", + " que.front = new_node\n", + " else:\n", + " cur = que.front\n", + " while(cur.next):\n", + " cur = cur.next\n", + " cur.next = new_node\n", + " return que\n", + "\n", + "def remove_node(que):\n", + " removed_node = que.front\n", + " if que.front:\n", + " que.front = que.front.next\n", + " return removed_node\n", + "\n", + "def priq_add(priq, priority, data):\n", + " if priority >= priq.nqueues:\n", + " print \"Error: priority number given is invalid!\"\n", + " return priq\n", + " new_node = node()\n", + " new_node.data = data\n", + " priq.queues[priority] = add(priq.queues[priority], new_node)\n", + " return priq\n", + "\n", + "def priq_remove(priq, priority):\n", + " removed_char = ''\n", + " if priority >= priq.nqueues:\n", + " print \"Error: priority number given is invalid!\"\n", + " return\n", + " removed = remove_node(priq.queues[priority])\n", + " if not removed:\n", + " if priority < priq.nqueues-1:\n", + " return priq_remove(priq, priority+1)\n", + " else:\n", + " return priq, 0\n", + " else:\n", + " lower_elm = ''\n", + " priq.queues[priority].nremovals += 1\n", + " if priq.queues[priority].nremovals == priq.npromote:\n", + " lower_elm = priq_remove(priq, priority+1)\n", + " if lower_elm:\n", + " priq_add(priq, priority, lower_elm)\n", + " priq.queues[priority].nremovals = 0\n", + " removed_char = removed.data\n", + " return priq, removed_char\n", + "\n", + " \n", + "def create_priq(nqueues, npromote):\n", + " priq = prique()\n", + " priq.nqueues = nqueues\n", + " for i in range(nqueues):\n", + " priq.queues.append(queue())\n", + " priq.npromote = npromote\n", + " return priq\n", + "\n", + "def get_option():\n", + " print \"\\n1: Insert an element\"\n", + " print \"2: Remove an element\"\n", + " print \"3: Quit\"\n", + " print \"Choose: \"\n", + " option = int(raw_input())\n", + " return option\n", + "\n", + "def get_data():\n", + " data = raw_input(\"Enter the data: \")\n", + " return data\n", + "\n", + "def get_priority():\n", + " priority = int(raw_input(\"Enter the priority: \"))\n", + " return priority\n", + "\n", + "def display_prique(priq):\n", + " print \"The priority queue is ...\"\n", + " for i in range(priq.nqueues):\n", + " que = priq.queues[i]\n", + " cur = que.front\n", + " print i,\n", + " while cur:\n", + " print cur.data,\n", + " if cur.next:\n", + " print \"->\",\n", + " cur = cur.next\n", + " print \"\"\n", + " print \"\"\n", + "\n", + "print \"No of priority levels: \"\n", + "nlevels = int(raw_input())\n", + "print \"No of consecutive removls for proirity promotion: \"\n", + "nremovals = int(raw_input())\n", + "priq = create_priq(nlevels, nremovals)\n", + "while True:\n", + " option = get_option()\n", + " if option == 1:\n", + " data = get_data()\n", + " priority = get_priority()\n", + " priq = priq_add(priq, priority, data)\n", + " elif option == 2:\n", + " priority = get_priority()\n", + " priq, data = priq_remove(priq, priority)\n", + " if data == 0:\n", + " print \"No elements to remove\"\n", + " else:\n", + " print data, \" was removed\"\n", + " elif option == 3:\n", + " break\n", + " else:\n", + " print \"BYE\"\n", + " break\n", + " display_prique(priq)" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "No of priority levels: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "No of consecutive removls for proirity promotion: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: q\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The priority queue is ...\n", + "0 q \n", + "1 \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: w\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The priority queue is ...\n", + "0 q -> w \n", + "1 \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: e\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The priority queue is ...\n", + "0 q -> w -> e \n", + "1 \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: r\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The priority queue is ...\n", + "0 q -> w -> e -> r \n", + "1 \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the data: z\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "The priority queue is ...\n", + "0 q -> w -> e -> r \n", + "1 z \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "q was removed\n", + "The priority queue is ...\n", + "0 w -> e -> r \n", + "1 z \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "w was removed\n", + "The priority queue is ...\n", + "0 e -> r \n", + "1 z \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "No elements to remove\n", + "The priority queue is ...\n", + "0 e -> r \n", + "1 z \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "e was removed\n", + "The priority queue is ...\n", + "0 r \n", + "1 z \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "Enter the priority: 0\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "r was removed\n", + "The priority queue is ...\n", + "0 \n", + "1 z \n", + "2 \n", + "3 \n", + "\n", + "\n", + "1: Insert an element\n", + "2: Remove an element\n", + "3: Quit\n", + "Choose: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Example 9.14, page no. 495" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "class Node:\n", + " def __init__(self, data):\n", + " self.data = data\n", + " self.left = None\n", + " self.right = None\n", + "\n", + " def insert(self, data):\n", + " if data < self.data:\n", + " if self.left is None:\n", + " self.left = Node(data)\n", + " else:\n", + " self.left.insert(data)\n", + " elif data > self.data:\n", + " if self.right is None:\n", + " self.right = Node(data)\n", + " else:\n", + " self.right.insert(data)\n", + "\n", + " def inorder(self, tree):\n", + " solution = []\n", + " def recurse(node):\n", + " if not node:\n", + " return\n", + " recurse(node.left)\n", + " solution.append(node.data)\n", + " recurse(node.right)\n", + " recurse(tree)\n", + " return solution\n", + " def preorder(self, tree):\n", + " solution = []\n", + " def recurse(node):\n", + " if not node:\n", + " return\n", + " solution.append(node.data)\n", + " recurse(node.left)\n", + " recurse(node.right)\n", + " recurse(tree)\n", + " return solution\n", + " def postorder(self, tree):\n", + " solution = []\n", + " def recurse(node):\n", + " if not node:\n", + " return\n", + " recurse(node.left)\n", + " recurse(node.right)\n", + " solution.append(node.data)\n", + "\n", + " recurse(tree)\n", + " return solution\n", + "\n", + "print \"Type numbers, one per line\"\n", + "print \"-999 for terminating\"\n", + "num = int(raw_input())\n", + "tree = Node(num)\n", + "while num != -999:\n", + " num = int(raw_input())\n", + " if num == -999:\n", + " break\n", + " tree.insert(num)\n", + "choice = 0\n", + "while choice != 4:\n", + " print \"\\nType of TRAVERSAL ?\"\n", + " print \"1 - Inorder\"\n", + " print \"2 - Preorder\"\n", + " print \"3 - Postorder\"\n", + " print \"4 - STOP\"\n", + " choice = int(raw_input())\n", + " if choice == 1:\n", + " print \"INORDER traversal: \"\n", + " sol = tree.inorder(tree)\n", + " for ele in sol:\n", + " print ele,\n", + " elif choice == 2:\n", + " print \"PREORDER traversal: \"\n", + " sol = tree.preorder(tree)\n", + " for ele in sol:\n", + " print ele,\n", + " elif choice == 3:\n", + " print \"POSTORDER traversal: \"\n", + " sol = tree.postorder(tree)\n", + " for ele in sol:\n", + " print ele,\n", + " else:\n", + " print \"BYE\"" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "Type numbers, one per line\n", + "-999 for terminating\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "8\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "-999\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "Type of TRAVERSAL ?\n", + "1 - Inorder\n", + "2 - Preorder\n", + "3 - Postorder\n", + "4 - STOP\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "1\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "INORDER traversal: \n", + "1 2 3 4 5 6 8 9 10 \n", + "Type of TRAVERSAL ?\n", + "1 - Inorder\n", + "2 - Preorder\n", + "3 - Postorder\n", + "4 - STOP\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "2\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "PREORDER traversal: \n", + "4 1 3 2 10 9 6 5 8 \n", + "Type of TRAVERSAL ?\n", + "1 - Inorder\n", + "2 - Preorder\n", + "3 - Postorder\n", + "4 - STOP\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "stream": "stdout", + "text": [ + "4\n" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "BYE\n" + ] + } + ], + "prompt_number": 11 + } + ], + "metadata": {} + } + ] +}
\ No newline at end of file |