学习数据结构day2

顺序栈
顺序存储:给各个数据元素分配连续的存储空间,大小为 Maxsize*sizeof(elemtype)。
栈顶指针:int top;

void initstack(sqstack &s){
		s.top=-1;
}					//初始化栈顶指针

void teststack(){
		sqstack s;  //声明一个顺序栈(分配空间)
		initstack(s);
		//后续操作...
#define maxsize 10
//入栈操作
bool push(sqstack &s,elemtype x){
		if(s.top==maxsize-1)  //栈满报错
			return false;       
		s.top=s.top+1;        //指针先加1
		s.data[s.top]=x;      //新元素入栈
		//或者s.data=[++s.top]=x;
		return ture;
}
//出栈操作
bool pop(sqstack &s,elemtype &x){
		if(s.top==-1)//栈空报错
			return false;
		x=s.data[s.top];//栈顶元素先出栈
		s.top=s.top-1;//指针再减1
		//或者可以这样写x=s.data[s.top--];
		return ture;
}

//读取栈顶元素
bool gettop(sqstack,elemtype &x){
	if(s.top==-1)
		return false;
	x=s.data[s.top];
	return ture;
}

top指针可以指向0的位置,top是关键,一定要分析明白top是指向0还是-1

共享栈:两个栈共享同一片空间
提高资源的利用率
栈满条件 :top0+1==top1;

typedef struct{
	elemtype data[maxsize];
	int top0;
	int top1;
}shstack;
//初始化栈
void initstack(shstack &s){
	s.top0=-1;
	s.top1=maxsize;
}		//总而言之一个从上自下,一个自下往上;

栈的基本操作都是O(1)的时间复杂度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值