C语言数据结构链表队列的实现
1.写在前面
队列是一种和栈相反的,遵循先进先出原则的线性表。
本代码是严蔚敏教授的数据结构书上面的伪代码的C语言实现代码。
分解代码没有包含在内的代码如下:
#include
#include
#define OK 1
#define ERROR 0
typedef int QElemtype;
typedef int status;
2.代码分解
2.1对队列和节点的结构定义
typedef struct QNode //对节点的结构定义
{
QElemtype data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{ //对队列的结构定义
QueuePtr head;
QueuePtr rear;
}LinkQueue;
|说明:
1.队列的节点首先要保存元素,其次要指引下一个元素的位置,这是实现线性存储的基础也是关键。
2.队列中定义了两个节点指针,第一个 head 用来表示 队头,允许移除元素。与之相反的是 rear 用来表示 队尾,允许插入元素。
3.为什么这么定义?
2.2 初始化和回收队列
status initQueue(LinkQueue* que) //初始化队列
{
que->head=que->rear=(QueuePtr)malloc(sizeof(QNode));