鏈式佇列是一種常見的佇列實現方式,通過鍊錶儲存佇列的各個資料元素,並設定兩個指標,分別指向隊頭和隊尾。應用佇列可以解決報數問題。
報數問題:設有n個人站成一排,從左向右的編號分別為1~n, 現在從左向右報數「1,2,1,2,1,2….」,數到」1」的人出列,數到」2」的人站到隊伍最右邊。報數過程反覆進行,直到n個人都出列為止。
分析:可以建立乙個佇列儲存各個資料。左邊相當於隊頭,右邊相當於隊尾。左邊的人報數相當於從佇列中取出隊頭元素並刪除隊頭元素。站到隊伍的最右邊相當於在隊尾插入乙個資料。為實現1,2,1,2,1,2….報數,可以設定乙個計數器變數count,count每次加1,count%2交替等於1和0,count%2等於1相當於報數1,count%2等於0相當於報數2。
此程式在vc++6.0 和 dev-c++下編譯通過。
#include "stdio.h"
#include "stdlib.h"
typedef struct qnode
qnode, *queueptr;
typedef struct
linkqueue;
int initqueue(linkqueue &q)
int clearqueue(linkqueue &q)
return 1;
}void destroyqueue(linkqueue &q)
int queueempty(linkqueue q)
int enqueue(linkqueue &q, int e)
int dequeue (linkqueue &q, int &e)
void baoshu(int n)
printf("\n");
destroyqueue(q);
}int main()
資料結構 佇列的鏈式實現
1 佇列的鏈式儲存表示 佇列的鏈式儲存結構簡稱為鏈佇列,它是限制在表頭進行刪除操作和表尾進行插入操作的單鏈表。需要兩類不同的結點 資料元素結點,佇列的隊首指標和隊尾指標的結點 指標結點型別定義 typedef struct link queue linkqueue 2 鏈隊運算及指標變化 鏈隊的操作...
資料結構 佇列的實現 鏈式
如下 include include typedef struct qnode qnode,queueptr typedef struct linkqueue void initqueue linkqueue q 初始化佇列,構造乙個空佇列q intenqueue linkqueue q,int e...
資料結構庫 鏈式佇列的實現
1,staticqueue 的物件在建立的時候,對於資料元素為類型別時,會多次呼叫元素型別的建構函式,影響效率,所以要實現鏈式佇列 2,佇列的鏈式儲存實現 3,鏈式佇列的設計要點 1,類模板,抽象父類 queue 的直接子類 2,在內部使用鏈式結構實現元素的儲存 3,只在鍊錶的頭部和尾部進行操作 4...