C 筆試題之實現單鏈錶兩兩反轉(置換)

2021-08-20 02:30:43 字數 464 閱讀 1853

兩兩反轉單鏈表就是把每兩個數反轉一次。如:

a -> b -> c ->d -> e -> f兩兩反轉後變為 b -> a -> d ->c -> f -> e。

具體**如下:

#include using namespace std;

struct node;

void display(node *head)// 列印鍊錶

else

}cout << endl;

}node* reverselist(node* head)// 兩兩反轉鍊錶

node* init(int num) // 建立鍊錶

cur->next = null;

return head;

}int main( )

這裡用到了遞迴,關於遞迴函式內部的執行順序詳見:

整個兩兩反轉過程如下所示:

單鏈表 兩種方法簡單實現單鏈表逆置

方法一 反轉前後指標,通過建立三個指標的移動,將兩兩相鄰的結點依次進行反轉。單鏈表的逆置 相鄰指標 pnode reverselist pnode phead pcur pnext ppre return pcur 方法二 頭插法,新建乙個頭結點,將原鍊錶的結點依次頭插到新鍊錶中。單鏈表的逆置 頭插...

面試題目 單鏈表的反轉(兩種方法)

2.3 2.4 總結 3 方式二 新建鍊錶,頭節點插入法 3.3 3.4 總結 單鏈表node的資料結構定義如下 class listnode 2.1 思路 把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。dummy 1 2 3 4 5的就地反轉過程 dummy 2 1...

Java單鏈表實現 附上兩種鍊錶反轉到實現方式

前幾天因為乙個現場演示需要,現場實現手動實現了乙個單鏈表,今天整理臨時檔案看到了這塊 就簡單整理了一下,發上來記錄一下。created by leon.l on 2018 3 29.desc 模擬鍊錶 public class linkedobj public linkedobj public vo...