小工具知识网

当前位置: 首页 > 行业知识 > 链栈的基本操作(超详细)

行业知识

链栈的基本操作(超详细)

2026-11-09 18:03:26 来源:互联网转载

���录

前言

一.链栈的定义 

二、链栈的c++语言结构描述表示

三、链栈中基本操作的实现 

3.1链栈的初始化

3.2判断链栈是否为空 

3.3求链栈的长度 

3.4 链栈的入栈

3.4 链栈的出栈

3.5求栈顶元素 

3.6销毁栈

四.链栈的具体实现 

五.测试结果

六、总结 


前言

本文参考王卓老师的数据结构视频和严蔚敏老师的《数据结构》

一.链栈的定义 

栈:操作受限的线性表,限定仅在表尾进行插入和删除操作的线性表,即后进先出。这一端被称为栈顶,相对地,把另一端称为栈底。

链栈:用链式结构存储的栈(我实际用的是不带头结点的单链表)

例子:类似子弹压入弹夹,后放入的子弹可以先从弹夹弹出来。

二、链栈的c++语言结构描述表示

代码如下(示例):

注意:我使用的是不带头节点的单链表

typedef struct LinkNode{

    int data;//数据域

    struct LinkNode *next;//指针域 

}stackNode,*LinkStack; 

三、链栈中基本操作的实现 

3.1链栈的初始化

无需new,因为我是不带头结点的单链表

void initStack(LinkStack &s){s=NULL;//不需要头节点 }

3.2判断链栈是否为空 

当s==NULL时,栈为空,则返回1;否则,返回0 

int stackEmpty(LinkStack s){if(s==NULL)return 1;return 0;}

3.3求链栈的长度 

长度表示有多少个节点

int stackLength(LinkStack s){int sum=0;stackNode *temp=s;while(temp!=NULL){sum++;temp=temp->next;}return sum;}

3.4 链栈的入栈

p是新节点

关键处在于当栈为空的时候,p就是第一个节点;而当栈不为空时,则让p的next指针指向s,而s更新到p节点,相当于还是让p作为第一个节点

void push(LinkStack &s,int e){stackNode *p=new stackNode;p->data=e;p->next=NULL;if(s==NULL)s=p;else{p->next=s;s=p;}}

3.4 链栈的出栈

当栈为空的时候,是无法弹出的

new一个p节点

而当栈不空时,则让p指向s的第一个节点,更新s,使s指向下一个节点,在删掉p

void pop(LinkStack &s,int &e){stackNode *p=new stackNode;if(s==NULL){cout

上一篇:golang怎么开发服务器软件?

下一篇:Python中的编码与解码字符集与Unicode的详解