演算法 反轉鍊錶

2021-09-07 10:14:14 字數 1260 閱讀 8205

編寫帶**實現反轉單鏈表。如 [1,2,3,4,5] 變為 [ 5,4,3,2,1 ] 

要求空間複雜度為o(1)

先直接給出乙份完整的**,可以直接執行。

c:

#include#include

#include

typedef

int datatype; //

鍊錶持有的資料的型別

typedef

struct node //

結點的定義

_link_node_;

typedef

struct

//鍊錶的定義

linkedlist;/**

初始化乙個帶頭結點的鍊錶

*/void init_list(linkedlist*plist)/**

輸入鍊錶元素建立鍊錶。

*/void creat_list(linkedlist*plist)}/*

*列印鍊錶

*/void print_list(linkedlist*plist)

}printf("]

");}/*

*求鍊錶的長度

*/size_t size_list(linkedlist*plist)/**

銷毀鍊錶

*/void delete_list(linkedlist*plist)

}/************************反轉單鏈表********************************/

void reverse_list(linkedlist*plist)

//退出迴圈

cur->next =pre;

plist->head->next =cur;

} //end if

}int main(void

)

測試的輸入輸出:

思想是使用3個游標結點指標,一邊修改結點的指標域,一邊往後挪動。最後使得整個鍊錶被反轉。

構造的初始鍊錶結構如下:

執行reverse_list函式的步驟:

演算法 鍊錶反轉

題目 分別實現反轉單向鍊錶和反轉雙向鍊錶的函式。要求如果鍊錶長度為n,時間複雜度要求為o n 額外空間 複雜度要求為o 1 反轉單向鍊錶 class node 反轉單向鍊錶 param head 煉表頭節點 return private static node reverselist node he...

演算法 反轉鍊錶

package bytedance author lzy version 1.0 date 2020 9 4 16 09 反轉鍊錶 public class reverselist public listnode reverselist listnode head 第乙個指標 指向空 翻轉後的末尾節...

演算法 鍊錶反轉

題目簡介 沒什麼可以過多介紹的,就是實現乙個鍊錶的反轉 class node 構建鍊錶 param vals array 鍊錶值的陣列 return node function genlinklist vals return head 反轉鍊錶 param head node 煉表頭結點 retur...