使用python实现队列

时间:2019-01-28 15:29:37

标签: python python-3.x list data-structures queue

我正在创建一个程序来创建队列并添加,删除和显示元素。 为此,我创建了一个列表,然后从用户那里获取输入并附加相同数量的0,然后正常进行。出现的问题是,后部和前部的值不会更改并保持恒定,从而导致其不显示也不填充。

我该如何解决。

l=[]
global front
global rear
front=-1
rear=-1
print("Enter the number of elements ")
maxsize=int(input())
i=0
q=0
for q in range(0,maxsize):       #for creating an array with user input number of 0s
    l.append(0)

def isFull():
    if(rear==maxsize):
        return 1
    else:
        return 0

def isEmpty():
    if(front==-1 and rear==-1):
        return 1
    elif(front==rear):
        return 1
    else:
        return 0

def enqueue(n):
    if(isEmpty()==1):
        front=0
        rear=0
        l[rear]=n
        rear=rear+1
    else:
        l[rear]=n
        rear=rear+1

def dequeue():
    if(isEmpty()==1):
        return 1
    else:
        front=front+1

while(i==0):
    print("Add an element ?(0) \nDelete an element?(1) \nDisplay the 
elements?(2)\n")
    a=int(input())
    if(a==0):
        if(isFull()==1):
            print("Queue is full")
        else:
            b=int(input())
            enqueue(b)
    if(a==1):
        dequeue()
    if(a==2):
        for c in range(front,rear):
            print(l[c])

1 个答案:

答案 0 :(得分:1)

您必须在使用全局变量的任何方法的开头重新声明全局变量(在这种情况下为front,在此情况下为后)。像这样

def enqueue(n):
    global front
    global rear
    if(isEmpty()==1):
        front=0
        rear=0
        l[rear]=n
        rear=rear+1
    else:
        l[rear]=n
        rear=rear+1