反转链表
输入一个链表,反转链表后,输出新链表的表头。
思想:如果要使得链表反转,就要next的next 指向它,但是这样next ->next就会丢失成为野指针,所有要先那一个变量把它存起来,然后在后移,改变下一个的指针,最后 ,phead 的next 设置为空,在最后的结构体指针赋值给phead返回回去。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead == NULL || pHead->next == NULL)
return pHead;
ListNode* cur = pHead;
ListNode* _next = pHead->next;
pHead->next = NULL;
ListNode* nnext = NULL;
while(_next != NULL)
{
nnext = _next->next;
_next->next = cur;
cur = _next;
_next = nnext;
}
pHead = cur;
return pHead;
}
};