题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
反转链表 1.反转链表,我们用到三个指针来动态地进行移动 分别是,前面的指针(pre),当前的指针(cur),后面的指针(nex) 移动的规律,因为每次都需要向后移动,所以需要将指针cur->next保存下来 然后将cur->next指针不再指向后面的指针,而是指向前面的指针。故而 cur->next = pre; 再接着,因为要保证循环的正常,所以需要前面的指针pre指向后面的一个元素,即pre=cur; 同时当前的元素也需要指向后面第一个元素。 完整的代码
/*struct ListNode{
int val;
struct ListNode*next;
ListNode(int x):val(x),next(NULL)
{
}
};*/
class solution
{
public:
ListNode*reverseList(ListNode*pHead)
{
ListNode*pre = NULL;
ListNOde*cur = pHead;
ListNode*nex = NULL;
while(cur)
{
nex = cur->next;
cur->next = pre;
pre = cur;
cur = nex;
}
return pre;
}