数据结构.第3章.栈和队列.1.栈
- 格式:pptx
- 大小:2.44 MB
- 文档页数:82
数据结构第三章数据结构堆栈和队列数据结构第三章数据结构堆栈和队列3.1 堆栈堆栈(Stack)是一种遵循后进先出(Last In First Out,LIFO)原则的线性数据结构。
堆栈中只有一个入口,即栈顶,所有的插入和删除操作都在栈顶进行。
3.1.1 堆栈的基本操作- Push:将元素插入到栈顶- Pop:从栈顶删除一个元素- Top:获取栈顶元素的值- IsEmpty:判断栈是否为空- IsFull:判断栈是否已满3.1.2 堆栈的实现堆栈可以使用数组或链表来实现。
- 基于数组的堆栈实现:使用一个数组和一个指针来表示堆栈,指针指向栈顶元素的位置。
Push操作时,将元素插入到指针指向的位置,然后将指针向上移动;Pop操作时,将指针指向的元素弹出,然后将指针向下移动。
- 基于链表的堆栈实现:使用一个链表来表示堆栈,链表的头结点表示栈顶元素。
Push操作时,创建一个新节点并将其插入链表的头部;Pop操作时,删除链表的头结点。
3.1.3 堆栈的应用堆栈广泛应用于各种场景,如函数调用栈、表达式求值、括号匹配等。
3.2 队列队列(Queue)是一种遵循先进先出(First In First Out,FIFO)原则的线性数据结构。
队列有两个端点,一个是入队的端点(队尾),一个是出队的端点(队首)。
3.2.1 队列的基本操作- Enqueue:将元素插入到队尾- Dequeue:从队首删除一个元素- Front:获取队首元素的值- Rear:获取队尾元素的值- IsEmpty:判断队列是否为空- IsFull:判断队列是否已满3.2.2 队列的实现队列可以使用数组或链表来实现。
- 基于数组的队列实现:使用一个数组和两个指针来表示队列,一个指针指向队首元素,一个指针指向队尾元素的下一个位置。
Enqueue操作时,将元素插入到队尾指针所指向的位置,然后将队尾指针向后移动;Dequeue操作时,将队首指针指向的元素弹出,然后将队首指针向后移动。
第一节栈
一、栈的定义及其运算
1、栈的定义
栈(Stack):是限定在表的一端进行插入和删除运算的线性表,通常将插入、删除的一端称为栈项(top),另一端称为栈底(bottom)。
不含元素的空表称为空栈。
栈的修改是按后进先出的原则进行的,因此,栈又称为后进先出(Last In First Out)的线性表,简称为LIFO表。
真题选解
(例题·填空题)1、如图所示,设输入元素的顺序是(A,B,C,D),通过栈的变换,在输出端可得到各种排列。
若输出序列的第一个元素为D,则输出序列为。
隐藏答案
【答案】DCBA
【解析】根据堆栈"先进后出"的原则,若输出序列的第一个元素为D,则ABCD入栈,输出序列为DCBA
2、栈的基本运算
(1)置空栈InitStack(&S):构造一个空栈S。
第三章堆栈和队列3.1 栈3.1.1 栈的定义及基本运算栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只有其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。
栈的定义栈(Stack):是限制仅在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。
栈的修改是按后进后出的原则进行的。
因此,栈又称为后进先出(Last In First Out)的线性表,简称为LIFO表。
栈的基本运算InitStack(S) 构造一个空栈S。
StackEmpty(S) 判栈空。
若S为空栈,则返回TRUE,否则返回FALSE。
StackFull(S) 判栈满。
若S为满栈,则返回TRUE,否则返回FALSE。
该运算只适用于栈的顺序存储结构。
Push(S,x) 进栈。
若栈S不满,则将元素x插入S的栈顶。
Pop(S) 退栈。
若栈S非空,则将S的栈顶元素删去,并返回该元素。
StackTop(S) 取栈顶元素。
若栈S非空,则返回栈顶元素,但不改变栈的状态。
3.1.2 顺序栈基本概念顺序栈:即栈的顺序存储结构,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。
栈顶指针和栈中元素之间的关系基本算法在顺序栈上实现栈的六种基本运算,具体算法如下:置空栈判栈空判栈满进栈退栈取栈顶元素3.1.3 链栈链栈:栈的链式存储结构称为链栈。
链栈是运算受限的单链表,它的插入和删除被限制在表头位置上进行。
栈顶指针就是链表的头指针,它唯一确定一个链栈。
链栈上实现的基本运算:置空栈判栈空进栈退栈取栈顶元素3.2 队列3.2.1 队列的定义及基本运算队列的定义队列(Queue)也是一种运算受限的线性表。
它只允许在表的一端进行插入,而在另一端进行删除。
允许删除的一端称为队头(Front),允许插入的一端称为队尾(Rear)。
队列的修改是按先进先出的原则进行的。
因此,队列又称为先进先出(First In First Out)的线性表,简称为FIFO表。