隊列初探

主要概念:

隊列是一種特殊的線性結構,它只允許在隊列的首部(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;
}


發佈了88 篇原創文章 · 獲贊 18 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章