3.1.1栈的基本概念

3.1.1栈的基本概念

1779069844844

1779069844844

1779069909932

1779069909932

1779070042561

1779070042561

1779070116608

1779070116608

1779070135702

1779070135702

1779070184421

1779070184421

1779070242397

1779070242397

1779070259372

1779070259372

3.1.2栈的顺序存储实现

1779070341937

1779070341937

顺序栈的定义

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

void testStack(){
    SqStack S;//声明一个顺序栈(分配空间)
    //...后续操作...
    
}

1779070397739

1779070397739

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

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

void testStack(){
    SqStack S;//声明一个顺序栈(分配空间)
    InitStack(S);
    //...后续操作...
    
}
//判断栈空	

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

进栈操作

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

//新元素入栈
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 true;
}

1779072484107

1779072484107

出栈操作

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

//出栈操作
bool Pop(SqStack &S,ElemType &x){
    if(S.top==-1)//栈空 报错
        return false;
    x=S.data[S.top];//栈顶元素先出栈
    S.top = S.top - 1;//指针再减一 等价 x=S.data[S.top--]
    return true;
}

1779072457979

1779072457979

读取栈顶元素操作

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

//出栈操作
bool Pop(SqStack &S,ElemType &x){
    if(S.top == -1)//栈空,报错
        return false;
    x=S.data[S.top--];//先出栈,指针再减一
    return true;
}

//读栈顶元素
bool GetTop(SqStack &S,ElemType &x){
    if(S.top == -1)//栈空,报错
        return false;
    x=S.data[S.top];//x记录栈顶元素
    return true;
}

1779073008687

1779073008687

另一种方式

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

//初始化栈
void InitStack(SqStack &S){
    S.top=0;//初始化栈顶指针
}
void testStack(){
    SqStack S;//声明一个顺序栈(分配空间)
    InitStack(S);
    //...后续操作...
    
}
//判断栈空	

bool StackEmpty(SqStack S){
    if(S.top == 0)//栈空
        return true;
    else			//不空
        return false;
}

1779073107476

1779073107476

共享栈

#define MaxSize 10
typedef struct{
    ElemType data[MaxSize];
    int top0;
    int top1;
}ShStack;

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

栈满条件:top0+1=top1

1779073309237

1779073309237

只是回顾与重要考点

1779073565535

1779073565535

3.1.3 栈的链式存储实现

1779073589615

1779073589615

1779073630322

1779073630322

1779073665169

1778659892390

1779073702143

1779073702143

1779073728229

1779073728229

1779073773476

1779073773476

posted @ 2026-05-18 17:10  轻狂书生han  阅读(4)  评论(0)    收藏  举报