这是我的循环堆栈代码。我要确保用户不能在堆栈中输入重复的值。
CircularStack = [None] * 10
headPosition = tailPosition = 0
def AddingItem(CircularStack, tailPosition, NewItem, headPosition):
CircularStack[tailPosition] = NewItem
printQue(CircularStack)
CircularLength = len(CircularStack)
PlaceToChange = CircularStack[tailPosition] = NewItem
DelOrAddItem = input("Do you want to delete an item?")
if DelOrAddItem == "Y" or DelOrAddItem == "y":
DeleteItemFromQueue(CircularStack, tailPosition, NewItem, headPosition)
else:
if tailPosition == len(CircularStack)-1:
tailPosition = 0
AdditionItems = int(input("Add Number to Queue"))
if headPosition == tailPosition:
print("STACK FULL")
else:
AddingItem(CircularStack, tailPosition, AdditionItems, headPosition)
else:
tailPosition = tailPosition + 1
AdditionItems = int(input("Add Number to Queue"))
if headPosition == tailPosition:
print("STACK FULL")
else:
AddingItem(CircularStack, tailPosition, AdditionItems, headPosition)
def DeleteItemFromQueue(CircularStack, tailPosition, NewItem, headPosition):
if headPosition == tailPosition:
print("STACK FULL")
else:
if headPosition == len(CircularStack):
headPosition = 0
else:
headPosition = headPosition + 1
AddingItem(CircularStack, tailPosition, NewItem, headPosition)
def printQue(CircularStack):
print(CircularStack)
FirstItemInQueue = int(input("Start Circular Queue with first input"))
AddingItem(CircularStack, tailPosition, FirstItemInQueue, headPosition)
答案 0 :(得分:1)
def AddingItem(CircularStack, tailPosition, NewItem, headPosition):
if NewItem in CircularStack:
#item already exists; return without doing anything.
return
#rest of function goes here
或者,循环直到该值不在列表中。
def AddingItem(CircularStack, tailPosition, NewItem, headPosition):
while NewItem in CircularStack:
NewItem = int(input("Item already exists. Please enter a different value: "))
#rest of function goes here