题目描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
解答
遍历一遍链表,边遍历边保存
/**
* 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* h=NULL;
while (head!=NULL)
{
if (h==NULL)
{
h= new ListNode;
h->val=head->val;
h->next=NULL;
}
else
{
ListNode* p=new ListNode;
p->val = head->val;
p->next=h;
h=p;
}
head=head->next;
}
return h;
}
};
BUG 忘记给链表赋初值(啊!)