#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
9.数据结构_栈的顺序存储
最新推荐文章于 2024-07-25 17:45:03 发布