第一讲 栈的定义
- 栈的定义
栈是一种只能在一端进行插入或删除操作的线性表。- 允许进行插入、删除操作的一端称为栈顶。
- 表的另一端称为栈底。
- 当栈中没有数据元素时,称为空栈。
- 栈的插入操作通常称为进栈或入栈。
- 栈的删除操作通常称为退栈或出栈。
- 栈的主演特点是“后进先出”,即后进栈的元素先出栈。栈也称为后进先出表。
- 栈中元素逻辑关系与线性表的相同,栈可以采用与线性表相同的存储结构。
- 初始化栈:
第二讲 链栈
- 链栈:采用链表存储的栈。
- 链栈的4要素:
- 栈空条件:s->next=NULL
- 栈满条件:不考虑
- 进栈e操作:将包含e的节点插入到头节点之后
- 退栈操作:取出头节点之后节点的元素并删除
- 初始化栈
第三讲 队列
-
队列的定义
队列简称队,它也是一种运算受限的线性表。
队列只能选取一个端点进行插入操作,另一个端点进行删除操作。
-
队列的几个概念
- 进行插入的一端称作队尾
- 进行删除的一端称作队首或队头
- 向队列插入新元素称为进队或入队
- 向队列删除元素称为出队或离队
-
顺序队的4要素
- 队空条件:front=rear
- 队满条件:rear=MaxSize-1
- 元素e进队:rear++;data[rear]=e
- 元素e出队:front++;e=data[front]
-
初始化队列
-
队列的主要特点是先进先出,所以又把队列称为先进先出表。
-
环形队列
- 假溢出:尾指针指向队尾,头指针指向队中,根据rear=MaxSize-1判断队满。
- 把数组的前端和后端连接起来,形成一个环形的顺序表,即把存储队列元素的表从逻辑上看成一个环,称为环形队列或循环队列
- 实现方式:
- rear=(rear+1)%MaxSize
- front=(front+1)%MaxSize
- 队空条件:rear=front
- 队满条件:(rear+1)%MaxSize=front
- 进队操作:rear=(rear+1)%MaxSize;将e放在rear处
- 出队操作:front=(front+1)%MaxSize;取出front处元素3
第四讲 链队
-
链队定义
采用链表存储的队列称为链队,采用不带头结点的单链表实现。
- 链队组成
- 存储队列元素的单链表节点
- 指向队头和队尾指针的链队头节点
- 链队组成
-
链队的4要素:
- 队空条件:front=rear=NULL
- 队满条件:不考虑
- 进队e操作:将包含e的节点插入到单链表表尾
- 出队操作:删除单链表表首数据节点
-
初始化队列: