<算法导论>练习10.1

本文探讨了如何使用栈和队列进行数据操作。10.1-1展示了栈的基本操作,如push和pop。10.1-2描述了一个双端数组实现的栈,10.1-3给出了判断队列满和空的函数。10.1-6和10.1-7分别展示了如何用栈模拟队列和用队列模拟栈的策略。这些内容深入解析了数据结构在实际问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10.1-1
push(s,4) s:4
push(s,1) s:4,1
push(s,3) s:4,1,3
pop(s) s:4,1
push(s,8) s:4,1,8

10.1-2
第一个栈从数组的下标0开始向后增加,第二个栈从数组的末尾n-1开始向前增加。当两者的下标相遇时二者的总和为n,停止向栈中增加元素。
10.1-3
定义好判断队列满及空的函数,在每次插入以及删除的时候判断一下即可。
判断函数如下:

def queue_empty(Q):
	if Q.head==Q.tail:
		return true
	else return false
def queue_full(Q):
	if Q.head==Q.tail+1 or (Q.head==1 and Q.tail ==Q.length):
		return true
	else:
		return false 

10.1-6
使用栈来模拟队列。栈的特点是先进后出,队列的特点是先进先出。可以使用两个栈,A和B,其中A用来弹出元素,B用来插入元素,当A为空时弹出B中的一个元素插入到A中。这样A中 的元素最多为1个,可以保证先进先出的特点。
10.1-7
使用两个队列来模拟先进后出的栈,将一个队列标记为活跃队列,插入元素时插入到活跃队列。弹出元素时,将活跃队列中的元素依次弹出至只留一个元素,并依次插入到另一个队列中,并将其标记为活跃,原活跃队列标记为非活跃,并弹出其剩下的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值