题目:
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */
代码:
1 class Solution { 2 public: 3 ListNode* reverseList(ListNode* head) { 4 5 if(head==nullptr || head->next==nullptr) 6 return head; 7 ListNode *last = nullptr; 8 ListNode *cur = head; 9 while(cur!=nullptr) 10 { 11 ListNode * temp = cur->next; 12 cur->next = last; 13 last = cur; 14 cur = temp; 15 } 16 return last; 17 18 } 19 };