反轉單鏈表,我使用了兩種方法,不過他們都很相近。
// 宣告
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...