9.数据结构_栈的顺序存储

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

//********************************
//要注意是使用数组来存储的,数组的索引是从0开始的
//而栈中的元素是从1开始的,,,所以要好好的想想他们的下标的对应的关系 
//********************************


//这是把栈顶指针设置为-1的操作
//(当然也可以设置成0,不过初始化,入栈,出栈等操作要做出相应的处理)



#define MaxSize 10//定义栈中元素的最大个数 
typedef struct{
	int data[MaxSize];//静态数组存放栈中的元素 
	int top;//栈顶指针 
}SqStack;




//初始化栈
void InitStack(SqStack &S){
	S.top = -1;//初始化栈顶指针 
} 



//判空
bool StackEmpty(SqStack S){
	if(S.top == -1){//栈空 
		return true;
	}else{			//栈非空 
		return false;
	}
} 



//新元素入栈
bool Push(SqStack &S,int x){
	if(S.top == MaxSize-1){
		return false;
	}
	
//	S.top = S.top+1;
//	S.data[S.top]=x;
//可以换为:
	S.data[++S.top]; 

	return true;
} 


//出栈操作(出栈只能是第一个出来)
bool Pop(SqStack &S,int &x){
	if(S.top==-1){
		return false;
	} 

//	x = S.data[S.top];
//	S.top-=1;
	x = S.data[S.top--];//只是在逻辑上删除了栈顶元素,但是数据任然在内存中 
	return true;
} 




int main(){
	SqStack S;//声明一个顺序栈(分配空间) 
	InitStack(S); 
	
}















//----------------------------------------------------------------
//这是共享栈的代码
//这是共享栈的代码
//这是共享栈的代码
//这是共享栈的代码
//这是共享栈的代码
//这是共享栈的代码
//这是共享栈的代码
//共享栈就是一块大的连续连续空间(数组),给两个栈共同使用
//以达到资源利用率的提高****************** 
typedef struct{
	int data[MaxSize];
	int top0;
	int top1;
}ShStack;


//初始化栈
void InitSqStack(ShStack &S){
	S.top0 = -1;
	S.top1 = MaxSize;
} 


//判断栈满的条件:
//top0 + 1 = top1  








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值