Python:单链表实现队列以及用循环链表实现队列

1.单链表实现队列

# -*- coding:utf-8 -*- 
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)			
发布了15 篇原创文章 · 获赞 6 · 访问量 1440

猜你喜欢

转载自blog.csdn.net/qq_39783265/article/details/100999454