【问题标题】:Queue implementation using python使用python实现队列
【发布时间】:2019-06-21 15:31:36
【问题描述】:

我正在创建一个程序来创建队列并添加、删除和显示元素。 为此,我创建了一个列表,然后从用户那里获取输入并附加相同数量的 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])

【问题讨论】:

  • 您是否有家庭作业来创建队列,或者您只是需要一个队列来完成其他任务?如果是后者,只需使用collections.deque,它已经有一些方法可以用来有效地在一端添加元素并从另一端移除元素。
  • 这是一项我必须使用标准功能的作业
  • @NamanSood,我回答你的问题了吗?
  • @MayankMehtani 是的,非常感谢它解决了我所有的错误

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


【解决方案1】:

您必须在使用它们的任何方法的开头重新声明全局变量(在本例中为前、后)。像这样

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多