一、顺序栈

1 . 栈空 top =  -1

2 . 栈满 top = StackSize - 1 (StackSize 为数组长度)

二 、两栈共享空间

原因:为了避免空间的浪费


①. 栈2空  top = StackSize;

②. 栈满 即 栈1的栈顶元素和栈2的栈顶元素位于数组的相邻位置top1=top2-1(或top2 = top1+1)

  ③ 入栈Push

template<class T>
void Push(int i,T x)
{
	if(top1==top2-1)
		throw "上溢";
	if(i == 1)
		data[++top1]=x;
	if(i == 2)
		data[--top2]=x;
}
④.出栈Pop
template<class T>
void Pop(int i)
{
	if(i == 1)
	{
		if(top1 == -1)
			throw "下溢";
		return data[top1--];
	}
	if(i == 2)
	{
		if(top2 == StackSize)
			throw "下溢";
		return data[top2++];
	}
}
三、链栈


1. 入栈 Push

template<class T>
void Push(T x)
{
	s = new Node;
	s->data = x;
	s->next = top;
	top = s;
}
2.出栈Pop

template<class T>
void Pop()
{
	if(top == NULL)
		throw "下溢";
	x = top->data;
	p = top;
	top=top->next;
	delete p;
	return x;
}
3 .栈空 top == NULL;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值