C 實現單向鍊錶的逆向列印

2021-09-25 01:31:50 字數 660 閱讀 8916

本文章記錄了實現鍊錶的逆向列印的方法。首先乙個比較簡單的實現方法是,將鍊錶的所有指標全部反向,這種方法是不值得推薦的,因為列印操作一般是乙個唯讀的過程,很少可以修改要列印的內容。所以在這裡我們記錄一下比較好的一些實現方法。

首先我們可以考慮,反向輸出鍊錶的過程實際上是乙個先入後出的過程,從頭到尾遍歷鍊錶,先讀到的內容是後列印的。這就讓我們想到了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 首尾同一節點 鍊錶 頭尾節點都應該在最開始就定義出來,頭就是第乙...