python 链式存储结构实现队列

'''
1. 队列特点:先进先出,队尾入队操作,队头出队操作
2. 使用单链表实现:尾部添加节点(入队),头部删除节点(出队)操作
'''

class Node:
	'''节点类'''
	def __init__(self,value):
		self.value = value
		self.next = None

class Queue:
	def __init__(self,node=None):
		'''空队列,记录队头位置'''
		self.head = node
	
	def is_empty(self):
		'''判断队列是否为空'''
		if self.head is None:
			return True
		return False
	
	def enqueue(self,val):
		'''入队列:在链表的尾部添加一个节点'''
		node = Node(val)
		#当是空链表时
		if self.is_empty():
			self.head = node
		#不是空链表
		else:
			current = self.head
			#循环完,current一定移动到尾巴节点
			while current.next:
				current = current.next
			
			current.next = node	#尾巴节点的next指向新节点
			node.next = Node	#新节点指向空
	
	def dequeue(self):
		'''出队列:相当于删除头结点,指针head指向head.next就行了'''
		if self.is_empty():
			raise Exception('queue is empty')
		result = self.head.value
		self.head = self.head.next	#这里head能是有node节点的next,value属性,是因为她先调用了enqueue()
		return result
	
	def top(self):
		'''查看队头元素:查看self.head的值'''
		if self.is_empty():
			raisr Exception('queue is empty')
		return self.head.value
	
	def travel(self):
		'''遍历整个队列:从队头 -> 队尾 输出'''
		if self.is_empty():
			return 
		else:
			current = self.head
			while current is not None:
				print(current.value,end=" ")
				current = curent.next
				print()	#换行
if __name__ == '__main__':
	q = Queue()
	#入队
	q.enqueue(100)
	q.enqueue(200)
	q.enqueue(300)			
	#出队
	print(q.dequeue())	#出头部的100
	print(q.is_empty())	#是否为空
	#队头元素:200
	print(q.top())
	#遍历:200,300
	q.travel()
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值