試題鏈接
題目描述:
定義一個函式,輸入一個鏈表的頭節點,反轉該鏈表并輸出反轉后鏈表的頭節點,
例如輸入:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
資料范圍:
0 <= 節點個數 <= 5000
解題思路:
其實就是一個轉過來的程序
1->2->3->4->5->NULL
NULL <- 1 <- 2 <-3 <- 4 <- 5
1.設一個 node1變數,初始值為 NULL,node2 初始值為head
node2的next指向node1

2.node1移動到node2所在位置,node2移動到node2next所在位置,重復步驟1

3.直至node2為NULL,回傳node1即可,最后結果如下

AC代碼(c++)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head == NULL){
return head;
}
ListNode * node1 = NULL;
ListNode * node2 = head;
while(node2){
ListNode * nt = node2->next;
node2->next = node1;
node1 = node2;
node2 = nt;
}
return node1;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/252051.html
標籤:其他
上一篇:146-洗掉鏈表倒數第N個節點
下一篇:C語言實作通訊錄系統
