//Jeffrey Dudek
//Cary Academy ACSL 4
//SR-3 Division
loop = 1
qs = 1
while loop == 1:
qs =
"na"
oper =
raw_input("Enter 's' or 'q': ")
oper =
oper.upper()
if oper ==
"S":
stack =
["A", "B", "C", "D", "E"]
total = stack
qs =
"stack"
elif oper ==
"Q":
queue =
["A", "B", "C", "D", "E"]
total = queue
qs =
"queue"
while loop == 1:
if qs ==
"stack":
while
loop == 1:
oper
= raw_input("Enter operation: ")
oper
= oper.upper()
if
oper[4:].isdigit() == True:
item = int(oper[4:])
else:
item = oper[4:]
oper
= oper[0:3]
if
oper == "POP":
del total[-item:]
if
oper == "PSH":
total.append(item)
if
oper == "DUP":
item2 = item
item = 0
while item != item2:
total.append(total[item])
item = item + 1
if
oper == "SWP":
swptemp1 = total[0:item]
swptemp2 = total[-item:]
del total[0:item]
item2 = item - 1
while item2 != -1:
total.insert(0, swptemp2[item2])
item2 = item2 - 1
del total[-item:]
item2 = 0
while item2 != item:
total.append(swptemp1[item2])
item2 = item2 + 1
if
oper == "SWH":
queue = total
total = queue
qs = "queue"
break
if
oper == "CRC":
temp = item
temp2 = 0
while temp != 0:
total.insert(temp2, total[-temp])
temp = temp - 1
temp2 = temp2 + 1
del total[-item:]
if
oper == "INS":
place = int(item[0]) - 1
part = item[3]
if place == 0:
total.append(part)
else:
total.insert(-place, part)
if
oper == "PIN":
total.insert(0, item)
if
oper == "SRT":
if item == "A":
total.sort()
if item == "D":
total.sort()
total.reverse()
if
oper == "PRT":
print total[-item:]
qs = "done"
break
if qs ==
"queue":
while
loop == 1:
oper
= raw_input("Enter operation: ")
oper
= oper.upper()
if
oper[4:].isdigit() == True:
item = int(oper[4:])
else:
item = oper[4:]
oper
= oper[0:3]
if
oper == "POP":
pop = item
while pop != 0:
total.pop(0)
pop = pop - 1
if
oper == "PSH":
queue.append(item)
if
oper == "DUP":
item2 = item
item = 0
while item != item2:
total.append(total[item])
item = item + 1
if
oper == "SWP":
swptemp1 = total[0:item]
swptemp2 = total[-item:]
del total[0:item]
item2 = item - 1
while item2 != -1:
total.insert(0, swptemp2[item2])
item2 = item2 - 1
del total[-item:]
item2 = 0
while item2 != item:
total.append(swptemp1[item2])
item2 = item2 + 1
if
oper == "SWH":
stack = total
total = stack
qs = "stack"
break
if
oper == "CRC":
temp = 0
while temp != item:
total.append(total[temp])
temp = temp + 1
del total[:item]
if
oper == "INS":
place = int(item[0]) - 1
part = item[3]
total.insert(place, part)
if
oper == "PIN":
total.insert(0, item)
if
oper == "SRT":
if item == "A":
total.sort()
if item == "D":
total.sort()
total.reverse()
if
oper == "PRT":
print total[:item]
qs = "done"
break
if qs ==
"done":
break
if qs ==
"stack":
continue
else:
print
"Stack or queue not defined."
break