数据结构c语言栈的知识点,数据结构_知识点_栈

栈是一种特殊线性表,仅允许在表的一端进行插入和删除操作。顺序栈利用数组实现,栈顶指针指示当前栈顶位置;链栈则采用链表结构,无需头结点,方便操作。共享栈通过同一顺序表实现两个栈,分别以两端为栈底。栈的主要操作包括压栈和出栈,常用于需要特定输出顺序的场景。
摘要由CSDN通过智能技术生成

1. 栈的定义

只允许在一段进行插入和删除操作的线性表。

可以理解为只有一个口的窄瓶子,出入都只能通过一个口。同时,瓶内elem按线性排列。

由特性可知,其输入与输出顺序可以有多种不同的变化。因而,栈多用于需要输出顺序特殊的临时存放。

顺序栈

typedef struct

{

elemType data[maxSize];

int top;

} SqStack;

顺序栈,是基于顺序线性表实现的,在c语言中通过创建数组,以及定义栈顶的指针(栈底的指针就默认为数组的为0的下标)。通过移动栈顶指针top,进行压栈,出栈的操作。

当栈为空时,top 为 -1。

链栈

typedef struct Node

{

elemType data;

Node *next;

};

typedef Node *stack;

链栈一般使用没有头结点的栈表实现。

没有使用头结点的好处是,把链栈的第一个结点作为栈顶,stack作为结点指针直接执行第一个结点,就能进行所有操作,而不用通过stack找到指向第一个结点的指针。

共享栈

两个栈使用同一个顺序栈

一个把0为下标的元素作为栈底,压栈时栈顶指针 + 1

一个把maxSiza为下标的元素作为栈底,压栈时栈顶指针 - 1

当栈满时,两个栈顶指针相差1

typedef struct

{

elemType data[maxSize];

int top1,top2;

}stack;

定义一个数组,两个指针。

2. 栈的操作

就是基本的线性表的插入与删除操作,结合栈的特性使用即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值