zoukankan      html  css  js  c++  java
  • 反转链表

    #include <iostream>
    #include <vector>
    #include <queue>
    using namespace std;
    
    struct LinkedListNode{
        int value;
        LinkedListNode *pNext;
        LinkedListNode(int v) : value(v) {}
    };
    
    //创建链表
    LinkedListNode *CreateLinkedList(int arr[], int len)
    {
        LinkedListNode *pHead = new LinkedListNode(arr[0]);
        LinkedListNode *pPre = pHead;
        LinkedListNode *pCurr = NULL;
    
        //每次进入该循环的时候,pPre是起作用的
        //pCurr都会重新构造一个LinkedListNode
        for (int i = 1; i < len; i++)
        {
            pCurr = new LinkedListNode(arr[i]);
            pCurr->pNext = NULL;
            pPre->pNext = pCurr;
            pPre = pCurr;
        }
        return pHead;
    }
    
    //输出链表
    void PrintLinkedList(LinkedListNode *pHead)
    {
        while (pHead)
        {
            cout<<pHead->value<<endl;
            pHead = pHead->pNext;
        }
    }
    
    //反转链表
    //需要3个指针,pCurr指向正在改变的Node,pPre指向需要改变到的位置,pNex记录不再被pCurr指向的下一个位置
    LinkedListNode *ReverseLinkedList(LinkedListNode *pHead)
    {
        if (!pHead)
            return NULL;
    
        LinkedListNode *pPre = NULL;
        LinkedListNode *pCurr = pHead;
        LinkedListNode *pNex = pHead->pNext;
        while (pCurr)
        {
            pCurr->pNext = pPre;
            pPre = pCurr;
            pCurr = pNex;
            if (pNex)//当pCurr为最后一个元素的时候,pNex已经为NULL,所以需要check
                pNex = pNex->pNext ? pNex->pNext : NULL;
        }
        return pPre;
    }
    
    int main()
    {
        int arr[10] = {4, 2, 5, 7, 4, 1, 7, 3, 1, 9};
        LinkedListNode *pHead = CreateLinkedList(arr, 10);
        PrintLinkedList(pHead);
        pHead = ReverseLinkedList(pHead);
        cout<<endl<<"After Reverse:"<<endl;
        PrintLinkedList(pHead);
        return 0;
    }

    EOF

  • 相关阅读:
    Ubuntu系统下adb连接小米
    Android自动化测试工具 calabash-android
    Android
    Android单元测试——Instrumentation
    Linux C语言 文件指针/句柄(FILE*)、文件描述符(fd)以及 文件路径(filepath)的相互转换
    Sublime Text 2 配置
    转: N个Android很有用的代码片段
    图片测试脚本
    数据查找
    小小
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2811610.html
Copyright © 2011-2022 走看看