本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。

一方面用于学习记录与分享,

另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。

如有侵权,请留言作删文处理。

课程视频链接:

数据结构与算法基础–第05周07–3.3栈的表示和实现3–3.3.2栈的顺序表示和实现2–顺序栈操作1

📚 【Week05】07_顺序栈的操作1

顺序栈的数据类型定义

#define MAXSIZE 100
typedef struct{
    // 栈底指针
	SElemType* base;
    // 栈顶指针
    SElemType* top;
    // 栈可用最大容量
    int stacksize;
}SqStack;

例如:

青岛大学_王卓老师【数据结构与算法】Week05_07_顺序栈的操作1_学习笔记-LMLPHP

⭐ NOTE:引用栈元素方式

(1) 用下表引用数组元素

top 和 base 可以定义成整型,用来放数组下标。

(2) 利用指针操作数组元素

指针 top 减去指针 base,等价于两个指针之间相差几个元素。

顺序栈的初始化

青岛大学_王卓老师【数据结构与算法】Week05_07_顺序栈的操作1_学习笔记-LMLPHP

#define MAXSIZE 100
typedef struct{
    // 栈底指针
	SElemType* base;
    // 栈顶指针
    SElemType* top;
    // 栈可用最大容量
    int stacksize;
}SqStack;


// 构造一个空栈

Status InitStack(SqStack &S){
    S.base = new SElemType[MAXSIZE];
    // 或
    // S.base = (SElemType*)malloc(MAXSIZE* sizeof(SElemType));
    if(!S.base)
        // 存储分配失败
        exit(OVERFLOW);
	// 栈顶指针等于栈底指针
    S.top = S.base;
    S.stacksize = MAXSIZE;    
    
    return OK;    
}
07-14 21:04