You are on page 1of 4

BSCS-402 DATA STRUCTURE

LAB 7
Implement Stack and Queues using Linked List

S.no DOUBLELL(CLASS).PY
1 class Node:
2 def __init__(self,data):
3 self.data = data
4 self.next_address = None
5 self.previous_address = None
6
7 class Doubly_Linked_List:
8 def __init__(self):
9 self.head = None
10
11
12 def printll(self):
13 if self.head is None:
14 print("DOUBLY LINKED LIST IS EMPTY")
15 else:
16 n = self.head
17 while n is not None:
18 print(n.data,'--->',end=" ")
19 n = n.next_address
20
21 def printll_reverse(self):
22 print()
23 if self.head is None:
24 print("DOUBLY LINKED LIST IS EMPTY")
25 else:
26 n = self.head
27 while n.next_address is not None:
28 n = n.next_address
29 while n is not None:
30 print(n.data, '--->', end=" ")
31 n = n.previous_address
32
33 def insert_empty(self,data):
34 if self.head is None:
35 new_node = Node(data)
36 self.head = new_node
37 else:
1|Page
38 print("DOUBLY LINK LIST IS NOT EMPTY")
39
40 def add_begin(self,data):
41 new_node = Node(data)
42 if self.head is None:
43 self.head = new_node
44 else:
45 new_node.next_address = self.head
46 self.head.previous_address = new_node
47 self.head = new_node
48
49 def add_end(self,data):
50 new_node = Node(data)
51 if self.head is None:
52 self.head = new_node
53 else:
54 n = self.head
55 while n.next_address is not None:
56 n = n.next_address
57 n.next_address = new_node
58 new_node.previous_address = n
59 def delete_begin(self):
60 if self.head is None:
61 print("DOUBLY LINKED LIST IS EMPTY HENCE CAN'T
62 DELETE")
63 return
64 if self.head.next_address is None:
65 self.head = None
66 # print("LIST IS EMPTY")
67 else:
68 self.head = self.head.next_address
69 self.head.previous_address= None
70
71 def delete_end(self):
72 if self.head is None:
73 print("DOUBLY LINKED LIST IS EMPTY HENCE CAN'T
74 DELETE")
75 return
76 if self.head.next_address is None:
77 self.head = None
78 # print("LIST IS EMPTY")
79 else:
80 n = self.head
81 while n.next_address is not None:
82 n = n.next_address
83 n.previous_address.next_address = None

2|Page
S.no PYTHON
1 from DoubleLL import Doubly_Linked_List
2 import random
3
4 def stack():
5 print("Converting Stack 1 into Stack 2 Using LIFO")
6
7 s1 = Doubly_Linked_List()
8 s2 = Doubly_Linked_List()
9
10
11 s1.add_begin(21)
12 s1.add_begin(32)
13 s1.add_begin(43)
14 s1.add_begin(23)
15 s1.add_begin(76)
16
17 print("Stack 1 Head :", end=" ")
18 s1.printll()
19 print()
20
21 while True:
22 a = s1.delete_begin()
23 if a ==None:
24 break
25 else:
26 s2.add_begin(a)
27 print("Stack 2 Head :" ,end=" ")
28
29 return s2.printll()
30
31
32
33 def Queues():
34 print("\n")
35 print("Converting Queue 1 into Queue 2 Using FIFO")
36 q1 = Doubly_Linked_List()
37 q2 = Doubly_Linked_List()
38
39 q1.add_end(21)
40 q1.add_end(32)
41 q1.add_end(43)

3|Page
42 q1.add_end(23)
43 q1.add_end(76)
44
45 print("Queue 1 Head :", end=" ")
46 q1.printll()
47 print()
48 while True:
49 a = q1.delete_begin()
50 if a == None:
51 break
52 else:
53 q2.add_end(a)
54 print("Queue 2 Head :", end=" ")
55 return q2.printll(),

stack()
Queues()

Result:

4|Page

You might also like