线性表和定义特点
- 线性表是具有相同特性的数据元素的有限序列
- 最多只有一个直接前趋,和直接后继
- 元素关系为线性的
案例引入
1. 一元多项式的运算


可以使用数组来实现
线性表的类型定义
抽象数据类型
ADT list{数据对象: D数据关系: R基本操作}ADT List
一、顺序表与链表
二、队列
只能在表尾插入,表头删除的线性表
2.1概述
1. 定义
2. 逻辑结构
3. 存储结构
4. 运算规则
5. 实现方式
3. 队列的存储实现
3.1 队列顺序存储实现
#define MAXQSIZE 100typedef struct{QElemType *base;//初始化动态分配存储空间int front;//首节点int rear; //尾节点}SqQueue;
普通实现
- 初始化: front=rear=0;
- 入队: base[rear]=x ;rear++;
- 出队: x=base[front];front++;
- 空判断: front==rear;
- 溢出判断
- 真溢出
- 若front==0,rear==MAXQSIZE
- 假溢出
- 若front!=0,rear=MAXQSIZE
- 真溢出


循环队列
循环队列可以解决队列假溢出的问题
- base[0]接在[MAXQSIZE-1]之后,若rear+1=M,则让rear=0
- 入队: base[rear] = x; rear=(rear+1)%MAXQSIZE
- 出队: x=base[front] ;front = (front+1)%MAXQSIZE

- ?如何判断队空队列满
//求队列的长度 int getLength(){ //(rear-front+MAXQSIZE)%MAXSIZE }
//入队 int EnQueue(){ } //出队 int DeQueue(){
} //取出队头元素 int getHead(){
}
<a name="td4eA"></a>### 3.2 队列的链式存储```c#define MAXQSIZE 100typedef struct{QElemType data;struct Qnode *next;}QNode,*QuenePtr;
如果用户无法预估队列的长度,则适合采用链式队列
- 链队列的类型定义

