打卡第三十九天
题目:反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
思路:想法是通过首先创立一个无意义的头节点,使得整个链表重新插入新的链表,由于特点是每次插入的是新链表的头节点,这样使得已插入的元素依次后移,便达到了目的。
链接:https://leetcode-cn.com/submissions/detail/31807827/
如图:`/**
-
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) {
ListNode* k = new ListNode(-1);
k->next = NULL;
ListNode* t = head;
ListNode* s;
while(t!=NULL)
{
s= t;
t= t->next;
s->next = k->next;
k->next = s;
}
return k->next;}
};`