資料結構 實現乙個單鏈表的逆置

2022-08-26 21:33:17 字數 1258 閱讀 3192

1:這是乙個經常被問到的面試題,也是乙份非常基礎的問題。比如乙個鍊錶是這樣的:

1->2->3->4->5通過逆置後成為5->4->3->2->1。

//

//#include

"stdafx.h

"#include

#include

using

namespace

std;

typedef

struct node//

定義鍊錶結構體

node;

node *create()//

建立單鏈表

else

q->next = null;/*

尾結點的後繼指標為null(空)*/}

return

head;

}int length(node *head)

return

len;

}void print(node *head)

}node *search_node(node *head, int pos)//

查詢單鏈表pos位置的節點,返回節點的指標。pos從0開始,0返回head節點

if (pos == 0

)

if (pos ==null)

while (--pos)

}returnp;}

node *insert_node(node *head, int pos, int data)//

單鏈表的插入

p = search_node(head, pos);//

獲得pos的節點指標

if(p!=null)

return

head;

}node *delete_node(node *head, int pos)//

刪除節點

p = search_node(head, pos - 1);//

獲得位置pos節點的指標

if (p != null&&p->next !=null)

return

head;

}node *reverse(node *head)//

鍊錶的逆置

return

prev;

}int

main()

view code

執行結果:

資料結構 單鏈表 逆置單鏈表

題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並返回反轉鍊錶後的頭結點。我們可以借助圖來分析一下 我們定義乙個新的頭結點為head,將begin指向head next,當begin不為空的時候,tmp begin,begin begin next,此時tmp是我們要摘下來的結點。tmp nex...

資料結構 單鏈表的逆置

單鏈表的逆置分為兩種方法 頭插法和就地逆置法。1 頭插法 演算法思路 依次取原鍊錶中的每乙個節點,將其作為第乙個節點插入到新鍊錶中,指標用來指向當前節點,p為空時結束。2 就地逆置法 listnode reverselist listnode phead listnode prev null lis...

資料結構 單鏈表的就地逆置

剛完成了嚴蔚敏的資料結構 單鏈表的就地逆置習題 2.21 解題時想到2種方案,特此總結一下 方案1 1遍歷單鏈表,並算出單鏈表的長度n。2定位到節點ai,與節點an i 1 i 1 to n 2 1 也就是單鏈表的一半長度 交換各自的資料 i 方案2 1定位尾節點 2依次將節點插入到尾節點之後 3將...