關于鏈式隊列是否需要頭結點
時間(jian):2017-01-04作者:華清(qing)遠見(jian)
隊列是(shi)一種特殊的線性表,它只允許在表頭進(jin)行刪除操作(zuo),而(er)在表尾進(jin)行插(cha)入操作(zuo),是(shi)一種先進(jin)先出的數(shu)據(ju)結構(gou)。 隊(dui)列(lie)可(ke)以采用數(shu)組存儲(chu),也可(ke)以采用鏈式(shi)存儲(chu)。關于鏈式(shi)存儲(chu)常見的又有兩種:帶頭(tou)(tou)結點(dian)和不帶頭(tou)(tou)結點(dian)。我們建議采用帶頭(tou)(tou)結點(dian)的實現方式(shi),因為,這樣可(ke)以大大簡化對(dui)隊(dui)列(lie)的處(chu)理。 下面以(yi)入隊操作為例,對(dui)本文觀點進(jin)行了(le)進(jin)一步(bu)的闡述。假設基(ji)本結構的定義為:
typedef int datatype; 帶頭結點的鏈隊入隊實(shi)現:
void enqueue(linkqueue* q, datatype x){ 不帶頭結(jie)點的鏈隊(dui)入隊(dui)實現:
void enqueue(linkqueue* q, datatype x){ 比較上(shang)面兩段程序,帶(dai)頭結(jie)(jie)點(dian)(dian)的(de)鏈(lian)(lian)隊(dui)的(de)入隊(dui)操(cao)作(zuo),只要(yao)把新生成的(de)結(jie)(jie)點(dian)(dian)加到(dao)尾結(jie)(jie)點(dian)(dian)后(hou)(hou)即可。而不(bu)帶(dai)頭結(jie)(jie)點(dian)(dian)的(de)操(cao)作(zuo)則(ze)還要(yao)注(zhu)(zhu)意到(dao)邊(bian)界(jie)操(cao)作(zuo),假如是第一次入隊(dui),需(xu)修改(gai)隊(dui)頭指針。同樣的(de)道理,對于出(chu)(chu)隊(dui)操(cao)作(zuo),假如是后(hou)(hou)一個結(jie)(jie)點(dian)(dian)出(chu)(chu)隊(dui),需(xu)要(yao)注(zhu)(zhu)意修改(gai)隊(dui)尾指針。由(you)此,我們建議鏈(lian)(lian)式(shi)隊(dui)列好采用(yong)帶(dai)頭結(jie)(jie)點(dian)(dian)的(de)實現方式(shi)。
相關資訊
發表評論
|