主要概念:
隊列是一種特殊的線性結構,它只允許在隊列的首部(head)進行刪除操作,稱爲“出隊”,而在隊列尾部(tail)進行插入操作,稱爲“入隊”。當隊列中沒有元素時(即head==tail),稱爲空隊列。即“先進先出”(First In First Out)原則。
隊列將是以後學習廣度優先搜索的以及隊列優化的Bellman-Ford最短路算法的核心數據結構。所以現在將隊列的三個基本元素(一個數組,兩個變量)封裝爲一個結構體類型,如下:
#include<stdio.h>
struct queue {
int data[100]; //隊列的主體,用來存儲內容
int head; //隊首
int tail; //隊尾
};
int main(void)
{
struct queue q;
int i;
//初始化隊列
q.head = 1;
q.tail = 1;
for(i = 1; i <= 9; i++) {
// 依次向隊列插入9個數
scanf("%d", &q.data[q.tail]);
q.tail++;
}
while(q.head < q.tail) //當隊列不爲空的時候執行循環
{
//打印隊首並將隊首出隊
printf("%d ", q.data[q.head]);
q.head++;
// 先將新隊首的數添加到隊尾
q.data[q.tail] = q.data[q.head];
q.tail++;
// 再將隊首出隊
q.head++;
}
return 0;
}