帶頭結點的單鏈表的逆序輸出

2021-09-24 23:33:42 字數 1292 閱讀 9012

設l為帶頭結點的單鏈表,試實現從尾到頭反向輸出l的每個結點元素。

第一種

對於單鏈表,從頭到尾輸出比較簡單,因此可以先將單鏈表l逆置,然後再按照常規方法輸出。

第二種

借助棧先進後出的思想,每經過乙個結點,就把它放入棧中,遍歷完整個鍊錶後,再從棧頂開始輸出結點。

然而實際操作上,並不需要真的設定乙個棧空間,使用遞迴方法也可完成任務(每當訪問乙個結點時,先遞迴輸出後面的結點,再輸出這個結點本身)。

這裡只放使用遞迴方法的**

void

printrevlist

(linklist l

)

需要特別注意,這裡在呼叫時,需要把入口改為第乙個帶資料的結點,即

printrevlist(l

->next)

;

//函式功能:

//實現一維陣列中兩個順序表的位置互換

//函式功能:實現從尾到頭反向輸出帶頭結點的單鏈表l的每個結點元素

//基本思想:借助棧的思想,使用遞迴方法實現

#include

using namespace std;

typedef int elemtype;

typedef struct lnodelnode,

*linklist;

//鍊錶的初始化

void

initlist

(linklist &l)

//使用尾插法建立單鏈表

linklist tailinsertlist

(linklist &

l, elemtype a

, int n)

r->next =

null

;//尾指標置空

returnl;

}//列印鍊錶的資料(無頭結點)

void

printlist

(linklist l

) cout << endl;

}//逆向輸出單鏈表

void

printrevlist

(linklist l

)void

main()

;tailinsertlist(l

,a,10

);printlist(l

);printrevlist(l

->next)

;//注意入口為第乙個帶元素的結點

}

帶頭結點的單鏈表

帶頭結點的單鏈表 1 頭結點 在棧區開闢,指標域指向第乙個首元結點,資料域不儲存資料,可以儲存當前結點的個數 2 普通結點 無論是頭結點還是普通結點都是乙個結構體型別,由指標域和資料域組成 指標域指向下乙個結點,儲存下乙個結點的位址 資料域可以設定成聯合體型別,成員由資料元素和結點個數組成,之所以將...

帶頭結點的單鏈表

include include define error printf struct node typedef int elementtype typedef struct node list typedef struct node node struct node list initialize ...

帶頭結點的單鏈表

帶頭節點的單鏈表 include include using namespace std typedef struct listnode node,pnode 新建結點,num表示結點個數 pnode newnode int num pnode temp head temp next null fo...