2.1 栈和队列

本文深入探讨了栈这一特殊线性表的数据结构,包括其抽象数据类型定义、基本操作及顺序存储与链式存储两种实现方式。同时介绍了栈的典型应用场景,并通过火车站调度的例子帮助理解LIFO原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.两种特殊的线性表

  顺序存储和链式存储

  特点:插入和删除可以在表的任何位置进行。

 问题:

 栈(LIFO)队列(FIFO)

主要内容:栈的定义,堆栈的表示和实现,堆栈的操作方式,顺序栈和链栈及其操作。

1.栈的抽象数据类型定义

~火车站的调度情况:一个有终结点的火车道,每节火车车厢进出该轨道的规则是什么样子的?

·必须遵循LIFO规则。只能在栈顶插入和删除的线性表,其特征为LIFO。

空栈:不含元素的空表

思考题:进栈的序列为123,两侧铁道均为单向行驶道,那么他们出栈的顺序会有几种,分别是怎么排列的。

3!=6,加上规则LIFO之后。

····抽象数据类型定义:

ADT Stack{数据对象,数据关系同线性表
基本操作:
IniStack(&S),DestoryStack(&S),
ClearStack(&S),StackEmpty(S),
StackLength(&S),GetTop(S),
Push(&S,e),Pop(&S,&e).
Stack Travers(S,visit())
}
栈的表示和存储:顺序栈和链栈
(1)栈的顺序存储
(2)栈的链式存储
TOP的作用是什么;
顺序栈的表示和实现:顺序表示,
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct{
 SElemType *base;
 SElemType *top;
int stacksize;
}sqStack;栈顶指针指向栈顶元素的下一个位置(即下次压栈时元素所放的位置)
顺序栈的结构  空栈 top = base
             非空非满栈   top是空的
             满栈  条件:top-base>= stacksize
栈的基本操作
链栈的结构:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值