伫列(
队列),又称 queue ,是先进先出(FIFO, First-In-First-Out)的线性排列。
伫列含义
伫列(
队列),又称 queue ,是先进先出(FIFO, First-In-First-Out)的线性排列。在具体应用中通常用阵列或链结串行来实现。伫列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
伫列的操作方式和
堆栈类似,唯一的区别在于伫列只允许新数据在后端进行加入。
阵列伫列
#include<stdio.h>
#include<stdlib.h>
struct Queue
{
int Array[10];//阵列空间大小
int head;//前端(front)
int tail;//後端(rear)
int length;//伫列长度
};
/*资料加入伫列*/
void EnQueue(Queue *Queue1,int x)
{
Queue1->Array[Queue1->tail]=x;
if(Queue1->tail==Queue1->length)
{
Queue1->tail=1;
}
else
{
Queue1->tail=Queue1->tail+1;
Queue1->length=Queue1->length+1;//这行逻辑上有问题
}
}
/*资料移出伫列*/
int DeQueue(Queue *Queue1)
{
int x=Queue1->Array[Queue1->head];
if(Queue1->head==Queue1->length)
{
Queue1->head==1;
}
else
{
Queue1->head=Queue1->head+1;
}
return x;
}
/*伫列操作*/
int main()
{
struct Queue *Queue1=(struct Queue *)malloc(sizeof(struct Queue));//建立
资料结构Queue1->length=10;//新增长度
Queue1->head=0;//必须要先初始化
Queue1->tail=0;//必须要先初始化
EnQueue(Queue1,5);//将5放入伫列
EnQueue(Queue1,8);//将8放入伫列
EnQueue(Queue1,3);//将3放入伫列
EnQueue(Queue1,2);//将2放入伫列
}