資料結構 鏈式佇列的實現與應用舉例 報數問題

2021-10-09 17:02:58 字數 917 閱讀 6572

鏈式佇列是一種常見的佇列實現方式,通過鍊錶儲存佇列的各個資料元素,並設定兩個指標,分別指向隊頭和隊尾。應用佇列可以解決報數問題。

報數問題:設有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...