Python数据结构与算法基础|第三期:代码实现——顺序存储队列与链式存储队列


由于队列的动态由队头指针与队尾指针共同反映,所以我们在实现先入后出的同时还要实现队头元素与队尾元素的访问。对于普通的队列,我们使用列表实现其顺序存储,使用其它方法实现其链式存储。


顺序存储

由于我们使用list作为queue的底层、用Queue类对list进行了简单封装,所以在顺序存储结构中我们可以方便的利用列表的方法。具体代码:

class Queue(object):
	'定义队列。'

	def __init__(self):
		'初始化一个空列表。'

		self.items = []

	def IsEmpty(self):
		'方法:判断队列是否为空。'

		return self.items == []

	def get_size(self):
		'方法:求队列长度。'

		return len(self.items)

	def get_TopValue(self):
		'方法:访问队头元素。'

		if self.IsEmpty():
			return None
		else:
			return self.items[0]

	def get_BottomValue(self):
		'方法:访问队尾元素。'

		if self.IsEmpty():
			return None
		else:
			return self.items[-1]

	def push(self,data):
		'方法:进队。'

		self.items.append(data)

	def pop(self):
		'方法:出队。'

		if self.IsEmpty():
			raise IndexError('队列为空。')
		else:
			self.items.pop(0)

简单测试:

my_queue = Queue()
print('Is my queue empty?\n{}'.format(my_queue.IsEmpty()))

[my_queue
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值