顺序栈——两栈共享空间

为了提高存储效率,可以使用一个数组实现两个栈,让每个栈的栈底分别位于数组的两端,向中间延伸。当栈满时,两个栈的指针相邻。文章介绍了如何实现这种两栈共享空间的数据结构。

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

两栈共享空间

在一个程序中如果需要同时使用具有相同数据类型的两个栈时,最直接的方法就是为每个栈开辟一个数组空间,不过这样做的结果可能出现一个站的空间已被占满而无法入栈操作,同时另一个栈的空间仍有大量剩余而没有得到利用的情况,从而造成存储空间的浪费。一种可取的方法是充分利用顺序栈单向延伸的特性,使用一个数组来存储两个栈,让每个栈的栈底为该数组的始端,另一个栈底为该数组的末端。每个栈从各自的端点向中间延伸。如图所示:

154015_8soK_2329975.png

其中栈1顶,栈2顶分别用top1,top2标识。M为整个数组的长度。如果栈满,则栈1指针和栈2指针相邻。

两栈共享空间的顺序栈实现

/**
 * 
 * @ClassName: SquentialBothStack.java
 * @Description: 两栈共享空间实现
 * @Copyright: Copyright (c) 2017
 * @author 周扬
 * @date 2017年6月6日 下午3:46:19
 * @version V1.0
 */
public class SquentialBothStack {

	/** 数组的长度 **/
	private int maxSize = 10;

	/** 存放栈元素的数组 **/
	private Object[] data = n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值