佇列是一種先進先出的資料儲存結構,一般作業系統中用的比較多,本文主要介紹對順序佇列的入佇列,出佇列,遍歷佇列操作。
定義順序佇列:
我們可以用乙個陣列來表示乙個順序儲存結構,兩個整數來分別指向陣列的下標,表示佇列的頭指標和尾指標;
typedef struct定義佇列之後首先就是初始化佇列:queue
queue;
初始化佇列的時候佇列一定是空的,佇列的頭指標和尾指標必須指向陣列的首端;
queue *init()定義佇列的儲存結構並且初始化佇列之後,接下來就要入佇列了。
在入佇列的時候需要注意幾個問題;
①:入佇列是必須判斷佇列是否已滿,可以用乙個數學公式來判斷:(h->rear + 1) % max == h->front 如果該表示式為true,說明佇列已滿;
②:把此佇列設定成迴圈佇列,即當h->rear走到陣列末端的時候,必須考慮把h->rear指向陣列的首端(0);【入佇列移動的是佇列的尾指標】
③:連續入佇列的時候必須在入佇列之後檢查佇列是否已滿;
我們有了這些規則之後就可以進行編碼了:
void insert(queue *h) //出佇列需要注意的問題:插入佇列
else
while(ch != '
y' && ch != '
y' && ch != '
n' && ch != 'n'
); }
}while(ch == '
y' || ch == 'y'
); }
}
①:判斷佇列是否為空;我們認為當頭指標等於尾指標是隊列為空;
②:當佇列的頭指標走到陣列尾部是需要改變頭指標指向陣列頭部;【出佇列只改變頭指標的位置】
③:連續出佇列的時候必須在出佇列之後檢查佇列是否為空;
void del(queue *h) //遍歷佇列:出佇列
else
while(ch != '
y' && ch != '
y' && ch != '
n' && ch != 'n'
); }
}while(ch == '
y' || ch == 'y'
); }
}
void bianli(queue *h) //完整的**如下:【**粘不上了,只能這樣了】遍歷佇列中的元素}}
1 #include2 #include34#define max 5
56 typedef struct
queue
7queue;
1213 queue *h; //
佇列頭結點
1415
16 queue *init()
1724
2526
27int get_int() //
得到整型
2836
while((ch = getchar()) != '
\n'); //
擷取多餘的字串
37return
input;
3839}40
41char get_first() //
得到第乙個字元
4249
50int menu() //
選擇選單
5164
return
result;65}
6667
void insert(queue *h) //
插入佇列
6891
else
92while(ch != '
y' && ch != '
y' && ch != '
n' && ch != 'n'
);98}99
100 }while(ch == '
y' || ch == 'y'
);101
}102
103}
104105
void bianli(queue *h) //
遍歷佇列中的元素
106
119}
120}
121122
void del(queue *h) //
出佇列123
146else
147while(ch != '
y' && ch != '
y' && ch != '
n' && ch != 'n'
);153
}154 }while(ch == '
y' || ch == 'y'
);155
}156
}157
158int main(void
)159
170do
171while(ch != '
y' && ch != '
y' && ch != '
n' && ch != 'n'
);175 }while(ch == '
y' || ch == 'y'
);176
177 }
資料結構 迴圈佇列的順序儲存結構
專案整體源 佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。線性表有順序儲存和鏈式儲存,棧是線性表,所以也有這兩種儲存方式。同樣,佇列作為一種特殊的線性表...
資料結構 迴圈佇列的順序儲存結構
佇列只允許在隊尾插入,在隊頭刪除 迴圈佇列防止假溢位現象 順序儲存結構用陣列實現 include using namespace std define ok 1 define error 0 define maxsize 6 typedef int elemtype typedef int stat...
資料結構 佇列 順序佇列 迴圈佇列 鏈佇列)
前言 一 佇列的定義 二 佇列的順序儲存結構 1.順序佇列的定義 2.迴圈佇列定義 3.迴圈佇列的基本操作 三 佇列的鏈式儲存結構 1.鏈佇列的定義 2.鏈佇列的基本操作 佇列也是一種線性表,其特殊性在於佇列的基本操作是線性表的子集。佇列按 先進先出 的規則進行操作,故稱其為操作受限的線性表。佇列 ...