C 演算法 反轉單鏈表

2021-07-23 20:19:22 字數 728 閱讀 1656

反轉單鏈表,我使用了兩種方法,不過他們都很相近。

// 宣告

class clist

;// 宣告反轉單鏈表函式

void reversesll(clist*&, clist* prenode = nullptr);

void csinglelinkedlist::reversesll(clist*& node, clist* prenode)

reversesll(node->next, node);

node->next = prenode;

}

二.遞迴每個節點,並同時修改其next指標指向

void csinglelinkedlist::reversesll(clist*& node, clist* prenode)

clist* next = node->next;

node->next = prenode;

reversesll(next, node);

}

呼叫函式

csinglelinkedlist sll;

sll.reversesll(sll.head->next);

sll.display(sll.head);

以上函式是在我之前寫過的乙個單鏈表的基礎上新增的。

單鏈表反轉演算法

struct listnode 想到兩種方法 想法是構建乙個新的單鏈表,然後遍歷原來的單鏈表,每遍乙個就把它插入到最新的單鏈表的開頭,下面是 struct listnode reverselist struct listnode list temp list last null while temp...

C 演算法之 反轉單鏈表

題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點,鍊錶節點定義為 struct listnode int m nvalue listnode m pnext 演算法思路 鍊錶 1 2 3 4 5 建立乙個 pprev節點,而且為空節點 pprev null 再建立乙個節點...

C 單鏈表反轉

複習下c 單鏈表反轉 思路 在順序讀取鍊錶的過程中,對每個節點逐個進行反轉 首先建立單鏈表 struct linknode linknode createlink return head 對鍊錶進行反轉 linknode reverse linknode head q next p head nex...