文章目錄
- 算法基礎入門
- 第二章 棧、隊列、鏈表
- 2.1 隊列
- 2.2 棧
- 2.3 紙牌游戲
- 2.4 鏈表
- 如何建立鏈表?
- 1.我們需要一個頭指針(head)指向鏈表的初始。鏈表還沒建立時頭指針head為空
- 2.建立第一個結點
- 3.設置剛創建的這個結點的數據域(左半)和指針域(右半)
- 4.設置頭指針,頭指針可方便對鏈表從頭到尾遍歷
- 5.指針q也指向當前結點
算法基礎入門
第二章 棧、隊列、鏈表
2.1 隊列
隊列是一種特殊的線性結構,它只許在隊列的首部進行刪除操作,稱為‘出隊’,在隊列的尾部進行插入操作,稱為‘入隊’。隊列無元素時,稱為‘空隊列’。隊列遵循‘先進先出’原則。
例:head和tail兩個整型變量分別用來記錄隊列的隊首和隊列的尾部的下一個位置
在隊首刪除一個數的操作就是head++;
對隊尾增加一個數的操作就是q[tail]=x;tail++;
#include <stdio.h>struct queue
{int data[100]; //隊列主體,存儲內容 int head; //隊首 int tail; //隊尾
};int main()
{struct queue q;q.head = 1;q.tail = 1;int i;for(i = 0; i < 10; i++){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++; //隊首出隊 }