LeetCode- 面试题24. 反转链表

感情迁移 提交于 2020-03-08 06:38:23

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

 

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
 

限制:

0 <= 节点个数 <= 5000

 

复习:

#include <iostream>
using namespace std;


//p1->p2->p3->p4;

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *p1,*p2,*p3;
        p1 = NULL;
        p2 = head;
        while(p2!=NULL){
            p3 = p2->next;
            p2->next = p1;
            p1 = p2;
            p2 = p3;
        }
        return p1;
    }
};


int main(){
    ListNode *head = new ListNode(0);
    ListNode *tmp = head;
    for(int i=1;i<=5;i++){
        ListNode *temp = new ListNode(i);
        tmp->next = temp;
        tmp = tmp->next;
    }

    Solution *ps = new Solution();
    ListNode *rever =ps->reverseList(head->next);

    while(rever!=NULL){
        cout<<rever->val<<endl;
        rever = rever->next;
    }
    return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!