用C++模板描述的連結串列、棧、佇列(補充) (轉)

amyz發表於2007-08-15
用C++模板描述的連結串列、棧、佇列(補充) (轉)[@more@]

在細想之後,對上一篇一些觀點作些修正。

我原來的想法是公用節點結構,這包括現在的單鏈節點,樹中的雙鏈節點,還有其他各種結構的節點。因為節點的資料成員公開,為了避免無意中對節點中的資料破壞,所有的公開介面沒有返回值為節點或者指向節點的指標。如果必須使用這樣的介面,可以派生一個新類解決問題。比如想新增一個原位逆轉鏈的演算法,可以派生一個新類,在新類中完成演算法。

在完成書後作業的時候,我發現了原書做法的好處,也就是我的做法的不足。如果使用原書的定義,在完成一個功能時,只需要寫出對應的實現。而在我的定義中,必須先派生一個類,然後把這個功能作為成員或者友元。

但是這種比較並不說明書上的定義比我的要合理。首先,使用到原位操作的情況並不多,書後作業只是一種特殊情況;換句話說,書上的定義只是對完成書後作業更實用些。其次,在使用到連結串列的時候,通常只會用到插入、刪除、取資料、搜尋等很少的幾個功能,我的定義足夠用了。而在完成一個時,對連結串列的擴充功能在設計階段就很清晰了,這時可以派生一個新類在整個軟體中使用,對整體的規劃更為有利。對於單個連結串列的操作,把它作為成員函式更好理解一些。也就是說我的定義靈活性不差。

綜上,對於完成書後作業,書上的定義方便一些;對於平常的應用,我的定義更好。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-959311/,如需轉載,請註明出處,否則將追究法律責任。

相關文章