队列:就是生活中的排队,因此排队是先到先得,也是先离开队伍,因此队列也是采用的先进先出的概念(FIFO,慢慢想想操作系统里面是不是也用到FIFO,自己去查吧 到底有没有)。如何能够准确的定位是先进先出呢,因此采用的就是头指针front和尾指针rear,通常这两个指针是封装成一个链队;注意front与rear是节点的数据类型哦~~~~~~
先来看看顺序队列吧:
<span style="font-size:12px;">#define MAXSIZE
typedef struct
{
DataType data[MAXSIZE];
int front, rear;
}Sequeue;
//定义一个指向队列的指针变量,并申请存储空间
Sequeue * sq = new Sequeue;
//队列的数据区域
sq->data[0] ~ sq->data[MAXSIZE - 1];
//为空队时:
sq->front = sq->rear = -1;
//入队操作
sq->rear++;
sq->data[sq->rear] = x;
//出队操作
sq->front++;
x = sq->data[sq->front]</span>
但是上面的这种会出现一种现象,就是当一个队列又有出队又有入队时,出了队的存储空间不能再次作为入队所需的存储空间,这种就是本来对没有满,但是不能继续入队,这种现象就称为