C
语言实现队列
定义
实现
定义结构
定义操作
创建队列
判断队列是否为空
访问队首元素
出队
入队
定义
在栈中提到,
队列是操作受限制的特殊的线性表?/p>
在队列的一端只能插入元素,
这一端叫做队尾?/p>
在队列的另一端只能删除元素,这一端叫做队首?/p>
同样举个栗子?/p>
在食堂排队打饭,
跑的快的同学排在队列的前面,
最先打到饭菜?/p>
后续到的同学
只能依次排列在队尾?/p>
买到饭菜的同学离开队列叫做出队?/p>
进入队列等候叫做入
队。食堂阿姨给队列中第一个同学打饭叫做访问队首元素?/p>
总结:队列有先进先出的特性,
FIFO
?/p>
First In First Out
?/p>
。每次只能在线?/p>
表的两端操作元素?/p>
实现
考虑到每次出队和入队都要移动队首和队尾指针?/p>
若采用顺序存储,
将会有可?/p>
造成顺序表前段部分存储单元的浪费?/p>
虽说可以采用循环队列的方式复用存储单
元,
若遇到队列满的情况,
将队列扩容比较麻烦?/p>
因此建议用链表的方式实现?/p>
列?/p>
定义结构
typedef int QueueType;
struct LinkQueue
{
QueueType key;
struct LinkQueue *next;
};
typedef struct queueNode{
struct LinkQueue *head;//
队列的头指针
struct LinkQueue *end; //
队列的尾指针
}Queue;
这里定义了连个结构体,链表和队列。队列中只保存两个指针——队首、队尾?/p>
后面的入队、出队的操作,只需要操作这两个指针就好?/p>