王道課後習題2 3 5 帶頭結點的單鏈表就地逆置

2021-09-26 08:19:02 字數 740 閱讀 2232

題目描述:

編寫演算法將帶頭結點的單鏈表就地逆置(輔助空間複雜度為o(1))

演算法思想:

1.頭插法 2.遞迴

核心**:

lnode* reverselist(lnode* &l)

return l->next;

}

遞迴:

leetcode上的題解:

乙個博主的題解:

1->2->3->4->null

1->(2->3->4->null)

return p

1->2->(3->4->null)

return p

1->2->3->(4->null)

return p

因為4->next==null,所以返回p=4

lnode* p=reverselist_recursion(head->next);

返回到上一層,此時的head是3.

head->next->next=head;

3->4

<-p

head->next=null;

3<-4

p1->2->(3->4->null)

return p

我感覺p是記錄下原鍊錶的最後乙個結點,每次返回都是p。p在遞迴返回的時候並不改變。

帶頭結點的單鏈表

帶頭結點的單鏈表 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...