题目
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
输入输出样例
输入:1->2->3->4->5->NULL
输出:5->4->3->2->1->NULL
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) {
ListNode *myhead = new ListNode(0); //在链表头结点前新建一个头结点(便于使用头插法)
myhead->next = nullptr;
ListNode *p, *q;
while(head) //头插法
{
p = head->next;
head->next = myhead->next;
myhead->next = head;
head = p;
}
ListNode *ans = myhead->next;
return ans;
}
};