1.单链表实现队列
class LinkedQueue:
class Node:
def __init__(self,element,next):
self.element = element
self.next = next
def __init__(self):
self.head = None
self.tail = None
self.size = 0
def len(self):
return self.size
def is_empty(self):
return self.size == 0
def first(self):
if self.is_empty():
print('Stack is empty')
return self.head.element
def dequeue(self):
if self.is_empty():
print('Stack is empty')
answer = self.head.element
self.head = self.head.next
self.size -= 1
if self.is_empty():
self.tail = None
return answer
def enqueue(self, e):
newest = self.Node(e,None)
if self.is_empty():
self.head = newest
else:
self.tail.next = newest
self.tail = newest
self.size += 1
if __name__=='__main__':
S = LinkedQueue()
S.enqueue(1)
S.enqueue(2)
S.enqueue(3)
S.enqueue(4)
S.enqueue(5)
print(S.head.element)
print(S.head.next.element)
print(S.head.next.next.element)
print(S.head.next.next.next.element)
2.循环链表实现队列
# -*- coding:utf-8 -*-
class CircularQueue:
class Node:
def __init__(self,element,next):
self.element = element
self.next = next
#创建一个空队列
def __init__(self):
self.tail = None
self.size = 0
def len(self):
return self.size
def is_empty(self):
return self.size == 0
def first(self):
if self.is_empty():
print('Stack is empty')
head = self.tail.next
return head.element
def dequeue(self):
if self.is_empty():
print('Stack is empty')
if self.size ==1:
self.tail = None
else:
oldhead = self.tail.next
self.tail.next = oldhead.next
self.size -= 1
return oldhead.element
def enqueue(self, e):
newest = self.Node(e,None)
if self.is_empty():
newest.next = newest
else:
newest.next = self.tail.next
self.tail.next = newest
self.tail = newest
self.size += 1
def rotate(self):
if self.size > 0:
self.tail = self.tail.next
if __name__=='__main__':
S = CircularQueue()
S.enqueue(1)
S.enqueue(2)
S.enqueue(3)
S.enqueue(4)
print(S.tail.element)
print(S.tail.next.element)
print(S.tail.next.next.element)
print(S.tail.next.next.next.element)
print(S.tail.next.next.next.next.element)
print(S.tail.next.next.next.next.next.element)
print(S.tail.next.next.next.next.next.next.element)
print(S.tail.next.next.next.next.next.next.next.element)