佇列 陣列實現 迴圈佇列

2021-05-26 05:28:02 字數 2505 閱讀 5076

1:  

// 陣列佇列.cpp : 定義控制台應用程式的入口點。

2:  

//

3:  #include
4:  #include
5:  #include  //abs()
6:  #include
7:  #include
8:  

using

namespace std;

9:
10:  

//定義乙個佇列的結構體

11:  

struct myqueue

12:  ;
17:
18:  

//規則說明:

19:  

//nhead 直接指向了對頭的資料位置,

20:  

//ntail 直接指向了隊尾要插入的位置,

21:  

//如果ntail==nhead ,隊列為空

22:  

//ntail 比 nhead位置小一,(就是在他前面乙個),代表隊滿

23:  

//所以陣列中能存放的資料要比陣列的空間小1,是為了判斷佇列滿的情況。

24:
25:  myqueue g_queue;        //定義全域性的佇列
26:
27:
28:
29:  

//設定隊列為空

30:  

int setempty(void)

31:
36:
37:  

//判斷佇列是否為滿

38:  

bool isfull(void)

39:
43:
44:  

//判斷佇列是否為空

45:  

bool isempty(void)

46:
49:
50:
51:  

//入隊

52:  

int enqueue(int ndata)

53:
60:  

else

61:
66:  }
69:  

//出隊

70:  

int dequeue(void)

71:
78:  

else

79:
84:  }
85:
86:
87:  

int _tmain(int argc, _tchar* argv)

88:
95:
96:  

//

97:  

for (int i = 0; i < 9; ++i)

98:
101:  

if (isfull()) //判斷佇列滿

102:
105:
106:  

for (int i = 0; i < 9; ++i) //出隊

107:
110:      printf("/n");
111:
112:  

if (isempty())

113:
116:
117:  

for (int i = 0; i < 8; ++i) //測試出隊和入隊

118:
123:      printf("/n");
124:
125:  

while(!isempty())

126:
129:      printf("/n");
130:
131:
132:      setempty();
133:  

for(int i=0; i<12; i++) //當入隊9 10 11時,佇列已經滿

134:          enqueue(i);
135:
136:  

for(int i=0; i<15; i++)//當出對i=9-14,共6次

137:          dequeue();
138:
139:      system("pause");
140:  

return 0;

141:  }
142:

佇列 陣列結構實現(迴圈佇列)

當元素較少時 tail位置在front後面 迴圈佇列與普通佇列出隊操作一樣,入隊的元素將會放在tail的位置上,隨後執行tail 操作 出隊時front位置上的元素將會置null,隨後執行front 操作 此時仍能保持著tail位置在front後面的狀態,如下圖所示 當元素繼續新增,最後乙個元素將放...

陣列實現迴圈佇列

1 動態陣列型別 typedef struct qnode queue 1 分配結構體內存與陣列記憶體 queue initialize1 相應main函式 int main 2 只分配陣列記憶體不分配結構記憶體 int initialize2 queue q 相應main函式 int main 2...

迴圈陣列實現佇列

佇列是先進先出 fifo 模式,從隊尾加入元素的操作叫入隊,從隊首刪除元素的操作叫出隊 設定兩個指標分別為front指向隊首,real指向隊尾。開始時front和real分別為 1。當有元素入隊時real 1 當有元素出隊時front 1.public class queuesimulation s...