Как предотвратить дублирование значений в круговом стеке? - PullRequest
0 голосов
/ 01 марта 2019

Это мой код для моего кругового стека.Я хочу убедиться, что пользователь не может ввести повторяющееся значение в стек.

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 голосов
/ 01 марта 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...