1,快速开始:
队列是一种和栈相反的,遵循先进先出原则的线性表。此文章使用链表来实现队列。
如上图所示,就像一个自来水管,先进入水管的水先从水龙头出来,即Front位置的元素最先出队列,因为它们是最先入队列的。
2、实现队列
本代码是严蔚敏教授的数据结构书上面的伪代码的C语言实现代码。
一定要多思考,多问为什么!
首先我们定义了一些常量:
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0typedef int QElemtype;
typedef int status;
2.1、对队列和节点的结构定义
既然底层是链表,那么每个节点不仅要保存当前值,还要指向下一个节点的地址。
对于队列来说,每次插入值都是在队尾(rear),每次取出值都是在队首(head),所以,我们一定是有两个变量来指向队头与队尾的。
综上所述,我们结构定义代码如下:
typedef struct QNode { //对节点的结构定义QElemtype data;struct QNode *next;
}QNode,*QueuePtr;typedef struct{ //对队列的结构定义QueuePtr head;QueuePtr rear;
}LinkQueue;