数据结构:栈的定义、初始化、进栈、出栈、读栈;共享栈;链栈

简介: 数据结构中栈的讲解

1.顺序栈

网络异常,图片无法展示
|

1.1顺序栈的定义

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

声明一个顺序栈后就会在内存中分配一整片连续的空间,其中内存大小为:MaxSize*sizeof(ELemType)

void testStack(){
    SqStack S;   //声明一个顺序栈
}

1.2栈的初始化操作

由于栈顶指针top需要指向此时栈顶元素,所以让top指向0是不合理的,可以初始化让top指向-1;判断一个栈是否为空,即判断S.top是否等于-1

初始化栈

void Inittack(SqStack){
    SqStack S;   //声明一个顺序栈
    S.top=-1;
}

判断栈空

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

1.3进栈操作

分析:

  1. 判断栈是否为空
  2. 栈顶指针+1
  3. 新元素入栈
bool Push(SqStack &S,ElemType x){
    if(S.top==NaxSize-1)
        return false;
    S.top+=1;
    S.data[S.top]=x;
        return true;
}

1.4出栈操作

bool Push(SqStack &S,ElemType &x){
    if(S.top==-1)
        return false;
    x=S.data[S.top--];
        return true;
}

1.5读栈顶元素操作

bool GetTop(SqStack &S,ElemType &x){
    if(S.top==-1)
        return false;
    x=S.data[S.top];
        return true;
}


2.共享栈

两个栈共享同一片空间

#define MaxSize 10           //定义栈中元素的最大个数          
typedef struct{
    ElemType data[MaxSize];   //静态数组存放栈中的元素
    int top0;     //0号栈栈顶指针
    int top1;     //1号栈栈顶指针
}SqStack;         //结构体重命名

初始化栈:

void InitStack(ShStack &S){
    S.top0=-1;
    S.top1=MaxSize;
}

3.链栈的定义

  • 进栈/出栈都只能在栈顶一段进行
  • 链头作为栈顶
typedef struct Linknode{
    ElemType data;           //数据域
    struct Linknode *next;   //指针域
}*LiStack                    //栈类型定义


目录
相关文章
|
1月前
【栈】数据结构栈的实现
【栈】数据结构栈的实现
|
22天前
|
算法
数据结构和算法学习记录——特殊线性表之栈(上)-栈的概念、栈的结构、链式栈数组栈、栈的结构体定义、栈的基本接口函数、栈顶初始化函数
数据结构和算法学习记录——特殊线性表之栈(上)-栈的概念、栈的结构、链式栈数组栈、栈的结构体定义、栈的基本接口函数、栈顶初始化函数
9 0
|
22天前
|
算法 C语言
数据结构和算法学习记录——特殊线性表之栈(下)-销毁栈函数、判断栈是否为空、压栈函数、出栈函数、取栈顶元素、计算栈中有多少个元素、栈有关习题-有效的括号
数据结构和算法学习记录——特殊线性表之栈(下)-销毁栈函数、判断栈是否为空、压栈函数、出栈函数、取栈顶元素、计算栈中有多少个元素、栈有关习题-有效的括号
14 0
|
1月前
|
Java
栈 之 如何实现一个栈
栈 之 如何实现一个栈
|
9月前
|
安全 Java
【数据结构】 栈(Stack)与栈的模拟实现
【数据结构】 栈(Stack)与栈的模拟实现
|
11月前
|
算法 C语言
【数据结构和算法】了解认识栈,并实现栈的相关函数(上)
【数据结构和算法】了解认识栈,并实现栈的相关函数(上)
|
11月前
|
算法
【数据结构和算法】了解认识栈,并实现栈的相关函数(下)
【数据结构和算法】了解认识栈,并实现栈的相关函数(下)
|
存储 C语言
栈的定义及基本操作实现(顺序栈)
栈的定义及基本操作实现(顺序栈)
140 0
|
机器学习/深度学习 人工智能 C#
C#<数据结构>栈的应用——括号分配问题
C#<数据结构>栈的应用——括号分配问题
63 0
|
存储 算法 开发者
数据结构和算法_栈的出栈操作|学习笔记
快速学习数据结构和算法_栈的出栈操作
197 0
数据结构和算法_栈的出栈操作|学习笔记