複製鏈接
請複製以下鏈接發送給好友

佇列

鎖定
佇列(隊列),又稱 queue ,是先進先出(FIFO, First-In-First-Out)的線性排列。
中文名
佇列
外文名
queue
別    名
隊列
概    念
先進先出的線性排列

佇列佇列含義

佇列(隊列),又稱 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放入佇列
printf("%d ",DeQueue(Queue1));//輸出佇列(5)
printf("%d ",DeQueue(Queue1));//輸出佇列(8)
printf("%d ",DeQueue(Queue1));//輸出佇列(3)
system("pause");
}