關(guān)于鏈?zhǔn)疥?duì)列是否需要頭結(jié)點(diǎn)
時(shí)間:2017-01-04作者:華清遠(yuǎn)見
隊(duì)列是一種特殊的線性表,它只允許在表頭進(jìn)行刪除操作,而在表尾進(jìn)行插入操作,是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。 隊(duì)列可以采用數(shù)組存儲(chǔ),也可以采用鏈?zhǔn)酱鎯?chǔ)。關(guān)于鏈?zhǔn)酱鎯?chǔ)常見的又有兩種:帶頭結(jié)點(diǎn)和不帶頭結(jié)點(diǎn)。我們建議采用帶頭結(jié)點(diǎn)的實(shí)現(xiàn)方式,因?yàn),這樣可以大大簡化對隊(duì)列的處理。 下面以入隊(duì)操作為例,對本文觀點(diǎn)進(jìn)行了進(jìn)一步的闡述。假設(shè)基本結(jié)構(gòu)的定義為:
typedef int datatype; 帶頭結(jié)點(diǎn)的鏈隊(duì)入隊(duì)實(shí)現(xiàn):
void enqueue(linkqueue* q, datatype x){ 不帶頭結(jié)點(diǎn)的鏈隊(duì)入隊(duì)實(shí)現(xiàn):
void enqueue(linkqueue* q, datatype x){ 比較上面兩段程序,帶頭結(jié)點(diǎn)的鏈隊(duì)的入隊(duì)操作,只要把新生成的結(jié)點(diǎn)加到尾結(jié)點(diǎn)后即可。而不帶頭結(jié)點(diǎn)的操作則還要注意到邊界操作,假如是第一次入隊(duì),需修改隊(duì)頭指針。同樣的道理,對于出隊(duì)操作,假如是后一個(gè)結(jié)點(diǎn)出隊(duì),需要注意修改隊(duì)尾指針。由此,我們建議鏈?zhǔn)疥?duì)列好采用帶頭結(jié)點(diǎn)的實(shí)現(xiàn)方式。
相關(guān)資訊
發(fā)表評論
|