数据结构----共享栈和链式结构栈

本文探讨了数据结构中的共享栈和链栈。共享栈是两个栈共享一个数组,节省空间,插入删除操作需要指定栈。链栈则是将栈与链表结合,避免了顺序栈的空间限制,插入和删除操作类似于链表。两者各有优势,适用于不同场景。

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

1.共享栈

1.1共享栈的定义

共享栈其实就是两个栈,合起来,共享一个数组存数据。这样子的好处就是,两个栈同一个空间。当栈1的数据多,栈2数据比较少,就可以这样子共享,对空间的浪费就会减少。当栈1为空,top1 = -1;栈2为空,top2 = n;

关键:有两个栈底,和两个栈顶top1,top2,从数组两端向中间靠拢。当 top1 + 1 = top2 的时候为栈满。

1.2共享栈结构

/*两栈共享空间结构*/
typedef struct
{
   
	int data[MAXSIZE];
	int top1;    // 栈1栈顶指针
	int top2;   //栈2栈顶指针 
	
 } SqDoubleStack; 

1.3共享栈插入

这个和顺序栈不同的就是,要指定,是栈1还是栈2插入。所以这里就有一个stackNumber来表示栈的参数。

/*插入元素e为新的栈顶元素*/
 Status Push (SqDoubleStack *s, int e, int stackNumber)
 {
   
 	if ( s->top1+1 == s->top2)   //栈已满,不能再push新的元素
	    return ERROR;
	if (stackNumber == 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值