JZ15反转链表

JZ15反转链表

代码:

/*
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 * next = NULL;
        while(pHead!=NULL)
        {
            next = pHead->next;//将下一个节点保存起来
            pHead->next = pre;//向反向指
            pre = pHead;//当前的头结点变成了前一个节点  继续走下去
            pHead=next;//下一个节点变成了当前头结点
        }
        return pre;//如果head为null的时候,pre就为最后一个节点了,但是链表已经反转完毕,pre就是反转后链表的第一个节点
    }
};

 

上一篇:C语言版数据结构中单链表的插入,查找,删除,排序与逆置


下一篇:数据结构——栈的实现