如何防止循环堆栈中出现重复值?

时间:2019-03-01 14:15:18

标签: python stack

这是我的循环堆栈代码。我要确保用户不能在堆栈中输入重复的值。

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)

1 个答案:

答案 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