-
Notifications
You must be signed in to change notification settings - Fork 0
/
final1.py
121 lines (91 loc) · 3.26 KB
/
final1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
from collections import deque
class Stack:
def __init__(self):
self.stack = deque()
def push(self, item):
self.stack.append(item)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
raise IndexError("Stack is empty")
def peek(self):
if not self.is_empty():
return self.stack[-1]
else:
raise IndexError("Stack is empty")
def is_empty(self):
return len(self.stack) == 0
def size(self):
return len(self.stack)
def show(self):
for item in self.stack:
print(item, ", ", end=' ')
class Queue:
def __init__(self):
self.queue = deque()
def enqueue(self, item):
self.queue.append(item)
def dequeue(self):
if not self.is_empty():
return self.queue.popleft()
else:
raise IndexError("Queue is empty")
def front(self):
if not self.is_empty():
return self.queue[0]
else:
raise IndexError("Queue is empty")
def is_empty(self):
return len(self.queue) == 0
def size(self):
return len(self.queue)
def show(self):
for item in self.queue:
print(item, ", ", end=' ')
def remove(self, item):
temp_queue = Queue()
while not self.is_empty():
element = self.dequeue()
if element != item:
temp_queue.enqueue(element)
while not temp_queue.is_empty():
self.enqueue(temp_queue.dequeue())
def remove_if_divisible(self, num):
for item in list(self.queue):
print(item)
if (item % num == 0):
self.remove(item)
if __name__ == '__main__':
nlist = []
stack = Stack()
queue = Queue()
while True:
try:
flag = True
user_input = int(input("\nEnter an integer: "))
print("\nYou entered:", user_input, "\n") #\n means newline
if(user_input % 2 == 0): #a
stack.push(user_input)
flag = None
if(user_input % 3 == 0): #c
queue.enqueue(user_input)
stack.push(queue.dequeue()) # moving an item from queue to stack
flag = None
if (stack.size() > 0):
if(stack.size() % 6 == 0): #b
for i in range(stack.size() // 2):
if (stack.peek() != 30): # check if the stack element is 30 or not, for question e
queue.enqueue(stack.pop()) # move half of the stack to the queue
flag = None
queue.remove_if_divisible(100)
if flag:
nlist.append(user_input)
print("\nThe list:")
print(nlist)
print("\nThe stack:")
stack.show()
print("\nThe queue:")
queue.show()
except ValueError:
print("\nError: Please enter a valid integer.\n")