キューデータ構造

免責事項:この記事は使用に学習の交換のためであるが、技術犯罪の使用を禁止、または危険

循環キューの問題

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1、静的キューがなぜ循環キューでなければならない
2、キューパラメータを決定するためにいくつかのサイクルを必要とする
二つのパラメータを決定するために必要な
2つのパラメータは、異なる状況において異なる意味を持ち
後フォントと
各パラメータ3、円形キューの意味
キューを初期化し、1)
フォントの値はゼロであり、リア
2)、非空キュー
フォントは、キューの最初の要素を表し
後、有効な最後のキュー・エレメント表す
3)、キュー空
フォントとリア等しく、必ずしもそうではないが、ゼロ
4環状擬似アルゴリズムチームのチーム含まれる
二つのステップ
1)、値が格納された位置rで表される
2)、正しい言葉遣い:R =(R + 1)アレイ%の長
書き込まエラー:R = R + 1
。5ダミーサイクルチームリストチームアルゴリズム
fは=(F + 1)%配列の長
円形のキューを決定する方法を図6に示すように、空で
等しい値の前後、すなわち、キューが空Fである場合に= R
円形のキューを決定するための方法を図7に示すように、持っています完全な
二つの方法:
1、より多くのテーブル識別パラメータの増加よりも
2、第2の実施の形態にあまり一般的要素] [
1)、F Rの値と次に、それはキューが満杯であることを示す場合
:2)、およびcは、言語擬似アルゴリズムがあることを示しIF((R&LT + 1)%の配列長== {完全に} F) {}不満


プログラムの実現

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

含める<malloc.hを>


typedefは 構造体 //データ型の定義QUEUEを
{ int型 * PBASE; int型フロント; int型 REAR。




} QUEUE;
大きな柱   キューのデータ構造スパン>
のボイド のinit (QUEUE *) ;
BOOLの en_queue (QUEUE *、int型のVal) ; //エンキュー
無効 traverse_queue (QUEUE *) ; //キュートラバーサル
BOOL full_queue (QUEUE *) ; //裁判官の前にチームにはすでにいっぱいではありません
BOOLの out_queue (QUEUE *、INT *) ; //チーム
BOOLの emput_queue (QUEUE *) ; //は、チームの時間が空であるかを決定

int型 メイン無効
{
QUEUE Q。int型のval;


init(&Q)。

en_queue(&Q、1。);
en_queue(&Q、2);
en_queue(&Q、3。);
en_queue(&Q、4。); IF(out_queue(&Q、およびヴァル)) { printf関数は、「成功チーム記載されているチームをデキュー要素は、次のとおり%DN "ヴァル); } { のprintf"「N-デキュー失敗); } traverse_queue(&Q); 戻り0 ;














}

のinit (QUEUE * PQ)
{
pQ-> PBASE =(INT *)はmallocはsizeofINT)* 6)。
pQ->フロント= 0
pQ->リア= 0

}

ブール full_queue (QUEUE * PQ)
{ もし、((pQ->リア+ 1)%6 == pQ->フロント)を返すそれ以外のリターンはfalse ; }







ブール en_queue (QUEUE PQ *、int型のval)
{ 場合(full_queue(PQ)) { 戻り } { pQ-> PBASE [pQ->リア] =ヴァル。 pQ->リア=(pQ->リア+ 1)%6返す ; }











}

traverse_queue (QUEUE * PQ)キューを通過する//
{ int型 I = pQ->フロント。一方、(I = pQ->リア!) { のprintf"%d個"、pQ-> PBASE [I])。 私は、(i + = 1)%6 } }










ブール emput_queue (QUEUE * PQ)
{ 場合(pQ->フロント== pQ->リア) { 戻り } { 戻り } }











ブール out_queue (QUEUE *のpQ、 INT *をpVal)
{ 場合(emput_queue(PQ)) { 戻り } { *をpVal = pQ-> PBASE [pQ->フロント]。 pQ->フロント=(pQ->フロント+ 1)%6返す ; }












}
1 
2
チームの成功は、チームの要素は、1で
、2 3

おすすめ

転載: www.cnblogs.com/lijianming180/p/12360818.html