• 剑指offer-面试题24-反转链表-链表


    /*
    题目:
    	定义一个函数,输入链表的头结点,反转链表输出反转后链表的头节点。
    */
    /*
    思路:
    	记录当前节点的next和pre。
    	断开当前节点指向next的指针,指向pre。
    */
    #include <iostream>
    #include<cstdlib>
    
    using namespace std;
    
    struct ListNode {
    	int val;
    	struct ListNode *next;
    	ListNode(int x) :
    			val(x), next(NULL) {
    	}
    };
    
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead == nullptr || pHead->next == nullptr) return pHead;
    
        ListNode* pre = pHead;
        ListNode* curr = pHead->next;
        pre->next = nullptr;
        ListNode* next = nullptr;
        while(curr){
            next = curr->next;
            curr->next =pre;
            pre = curr;
            curr = next;
        }
        return pre;
    }
    
    int main()
    {
        ListNode *node6 = new ListNode(6);
        ListNode *node5 = new ListNode(5);
        ListNode *node4 = new ListNode(4);
        ListNode *node3 = new ListNode(3);
        ListNode *node2 = new ListNode(2);
        ListNode *node1 = new ListNode(1);
        ListNode *pHead = new ListNode(0);
        pHead->next = node1;
        node1->next = node2;
        node2->next = node3;
        node3->next = node4;
        node4->next = node5;
        node5->next = node6;
        node6->next = nullptr;
    
        pHead = ReverseList(pHead);
        cout<<"answer"<<endl;
        while(pHead != nullptr){
            cout<<pHead->val<<endl;
            pHead = pHead->next;
        }
    
    
        cout << "Hello world!" << endl;
        return 0;
    }
    

        

  • 相关阅读:
    11 数值的整数次方
    10 二进制中1的个数
    6 重建二叉树
    5 从尾到头打印链表
    计算机网络面试题
    Http和Https的区别
    UVALive 7749 Convex Contour (计算几何)
    Gym 101190H Hard Refactoring (模拟坑题)
    UVa 11324 The Largest Clique (强连通分量+DP)
    HDU 6006 Engineer Assignment (状压DP)
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/11904751.html
Copyright © 2020-2023  润新知