單鏈表反轉

2021-06-07 04:56:26 字數 925 閱讀 6785

單鏈表反轉,可以用迴圈做,當然也可以遞迴

詳見**:

#include#includestruct node;

/*3 -> 1 -> 4 -> 6 -> 2 (1)

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

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

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

2 -> 6 -> 4 -> 1 -> 3 (5)

迴圈反轉,即依次改動3個指標值,直到鍊錶反轉完成

比如,上面第(1)行到第(2)行,過程如下

head(原本指向3) 指向 1;

3(原本指向1) 指向 4;

1(原本指向4) 指向 3;

*/void rev_link(node * & head)

}node * ***(node * head,node *pre)

void put_link(node * head)puts("");

}int main();

node * head = null;

for(i=0;i<5;i++)

printf("*************原始鍊錶*************\n");

put_link(head);

rev_link(head); //while迴圈反轉

printf("\n*************迴圈反轉*************\n");

put_link(head);

head = ***(head,null); //遞迴反轉

printf("\n*************遞迴反轉*************\n");

put_link(head);

return 0;

}

反轉單鏈表

include stdafx.h include include using namespace std struct listnode typedef listnode plistnode typedef plistnode list list creatlist return head void...

單鏈表反轉

想起很早以前某次面試,面試官很嚴肅的要求我現場手寫單鏈表反轉的 哥虎軀一震,心想 不就需要要個臨時變數來記錄位址嗎,用得著這樣煞有介事?雖然在那之前我的確沒寫過這個程式,哈哈哈 當時我草草寫了十來行 面試官不等我完成,就直接拿過去開始問問題。不知道是不是因為抗壓能力不足,在面試官的不斷 盤問 下,哥...

單鏈表反轉

挺簡單的經典題,自己寫的第乙個版本,變數初始化是這麼做的,pprevs phead,pcurrent phead next,看著也覺得怪怪的。最後review的時候,發現這樣不會把反轉前第乙個節點的next置空!修正版本 include stdafx.h include using namespac...