算法----写一个队列

 1 写一个队列
 2 队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务,
 3 新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。
 4 我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现队列的入队enqueue和出队dequeue的操作,
 5 上面栈一个元素每次出去是列表的最后一个,直接用list.pop()出栈,而出队列每次是第一个,所以要用list.pop(0)出队列
 6 
 7 class Queue():
 8     def __init__(self,size):
 9         self.size=size
10         self.front=-1 #头指针
11         self.rear=-1
12         self.queue=[]#尾指针
13 
14     def enqueue(self,ele):#入队操作
15         if self.isfull():
16             raise exception("queue is full")
17         else:
18             self.queue.append(ele)
19             self.rear=self.rear+1
20 
21     def dequeue(self)#出队
22            if self.isempty():
23                raise exception("queue is empty")
24            else:
25                self.queue.pop(0)
26                self.front=self.front+1
27 
28     def isfull(self):
29         return self.rear-self.front+1==self.size
30     def isempty(self):
31         return self.front==self.read
32     def showQueue(self):
33         print(self.queue)
34 
35 q=Queue(10):
36     for i in range(10):
37         q.enqueue(i)#10个入队
38 
39 q.showQueue()
40 
41 for i in range(6):
42     q.dequeue()#6个入队
43 
44 q.showQueue()
45 """
46 类中设置两个属性分别为front和rear来模拟队列的头尾指针,通过它们值的关系可以判定队列是空还是满
47 """

 

写一个队列队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务,新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元素删除。我们可以设置一个类,用列表来存放栈中元素的信息,利用列表的append()和pop()方法可以实现队列的入队enqueue和出队dequeue的操作,上面栈一个元素每次出去是列表的最后一个,直接用list.pop()出栈,而出队列每次是第一个,所以要用list.pop(0)出队列
class Queue():    def __init__(self,size):        self.size=size        self.front=-1 #头指针        self.rear=-1        self.queue=[]#尾指针
    def enqueue(self,ele):#入队操作        if self.isfull():            raise exception("queue is full")        else:            self.queue.append(ele)            self.rear=self.rear+1
    def dequeue(self)#出队           if self.isempty():               raise exception("queue is empty")           else:               self.queue.pop(0)               self.front=self.front+1
    def isfull(self):        return self.rear-self.front+1==self.size    def isempty(self):        return self.front==self.read    def showQueue(self):        print(self.queue)
q=Queue(10):    for i in range(10):        q.enqueue(i)#10个入队
q.showQueue()
for i in range(6):    q.dequeue()#6个入队
q.showQueue()"""类中设置两个属性分别为front和rear来模拟队列的头尾指针,通过它们值的关系可以判定队列是空还是满"""

posted @ 2020-02-17 20:24  进阶的淑琴  阅读(225)  评论(0)    收藏  举报