本文章記錄了實現鍊錶的逆向列印的方法。首先乙個比較簡單的實現方法是,將鍊錶的所有指標全部反向,這種方法是不值得推薦的,因為列印操作一般是乙個唯讀的過程,很少可以修改要列印的內容。所以在這裡我們記錄一下比較好的一些實現方法。
首先我們可以考慮,反向輸出鍊錶的過程實際上是乙個先入後出的過程,從頭到尾遍歷鍊錶,先讀到的內容是後列印的。這就讓我們想到了stack這一資料結構,我們可以在每讀取到乙個節點時,將該節點放到棧中,遍歷完成整個鍊錶之後,從棧頂逐個輸出節點的值,就直接實現了逆向輸出的過程。**如下:
void printlistreversingly(listnode* phead)
while (!nodes.empty())
}
除了使用棧實現之外,我們可以考慮使用遞迴進行實現。在訪問乙個節點的時候,我們先遞迴輸出它後邊的節點,然後再輸出本身節點內容,這樣就實現了逆向輸出,**如下:
void printlistreversinglyrecursively(listnode* phead)
cout << phead->key << endl;
}}
在這兩種方法中,遞迴呼叫的缺陷在於,如果鍊錶非常長,導致函式的呼叫層次很深,進而導致函式呼叫的棧溢位,而使用stack的實現方法則不會出現這種問題。 c實現單向鍊錶
實現乙個單向鍊錶的 建立 插入 刪除 排序 冒泡 逆向 搜尋中間節點 include include include using namespace std typedef struct student node 建立鍊錶 node create else 4.釋放頭節點 p next null p...
單向鍊錶的實現C
鍊錶是常用的一種資料結構,如何建立鍊錶 增 刪 查詢等功能是本文討論的內容。首先,鍊錶需要兩個指標,乙個是頭指標是固定不變的,乙個是移動變化的指標。1 為什麼要頭指標?原因是單向列表中的資料結構包含的只有下乙個資料的指標,這樣就說明了,單向鍊錶是不可逆向進行操作。所有的操作都需要正向去操作。這時我們...
C實現單向鍊錶(創造鍊錶)
include include typedef struct nodenode,pnode pnode create list void intmain pnode create list void pnode ptail phead 首尾同一節點 鍊錶 頭尾節點都應該在最開始就定義出來,頭就是第乙...