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