精華區beta Marginalman 關於我們 聯絡資訊
206. Reverse Linked List 給你一個Linked List,請把它倒轉。 Example 1: Input: head = [1,2,3,4,5] Output: [5,4,3,2,1] Input: head = [1,2] Output: [2,1] Input: head = [] Output: [] 思路: 首先確認linked list是否為NULL,若為NULL,回傳NULL。 再者設兩指針,next指向下一個位子,prev指向前一個位子, head指向自己,換言之,指向現在的位子。 最後如程式碼所示,先將next移到head->next的位子,head->next指向prev, prev移到head現在的位子,head移到下一個位子。 C Code ----------------------- /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseList(struct ListNode* head){ if(head == NULL){ return NULL; } struct ListNode* prev = NULL; struct ListNode* next = NULL; while(head != NULL){ next = head->next; head->next = prev; prev = head; head = next; } return prev; } ------------------------ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.193.220 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1672750866.A.634.html
heynui: 大師01/03 21:01
SecondRun: 你很棒01/03 21:16
你是程式大佬 ※ 編輯: sustainer123 (223.137.193.220 臺灣), 01/03/2023 21:17:39