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

    输入一个链表,反转链表后,输出链表的所有元素。

    我的代码:

    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            if(pHead == NULL)
                return NULL;
            stack<ListNode*> sta;
            while(pHead != NULL)
            {
                sta.push(pHead);
                pHead = pHead->next;
            }
            ListNode* p = sta.top();
            ListNode* pp = sta.top();
            while(!sta.empty())
            {
                p = sta.top();
                sta.pop();
                if(!sta.empty())
                    p->next = sta.top();
                else 
                    p->next = NULL;
            }
            return pp;
        }
    };

    小黑的代码:

    class Solution {
        public:
            ListNode* ReverseList(ListNode* pHead) {
                if(pHead == NULL)
                    return NULL;
                stack<ListNode*> sta;
                while(pHead != NULL)
                {
                    sta.push(pHead);
                    pHead = pHead->next;
                }
                ListNode* p = sta.top();
                ListNode* pp = sta.top();//记录链表的头
                sta.pop();
                while(!sta.empty())
                {
                    p->next = sta.top();
                    sta.pop();
                    p=p->next;
                }
                p -> next = NULL;
                return pp;
            }
    };

     3个指针代码:

    Node* Reverse(Node* node)
    {
        Node* pre = node;
        Node* p = node->next;
        Node* pnxt = p->next;
        node->next = NULL;
        while(pnxt != NULL)
        {
            p->next = pre;
            pre = p;
            p = pnxt;
            pnxt = pnxt->next;
        }
        p->next = pre;
        return p;
    }

    改进版:

    Node* Reverse(Node* node)
    {
        Node* pre = NULL;//被指向的
        Node* p = node;//当前
        Node* pnxt = node->next;//要断开的
        while(pnxt != NULL)
        {
            p->next = pre;
            pre = p;
            p = pnxt;
            pnxt = pnxt->next;
        }
        p->next = pre;
        return p;
    }
  • 相关阅读:
    使用过滤器解决JSP页面的乱码问题
    六度空间(MOOC)
    navicat连接mysql出现1251错误
    Saving James Bond
    列出连通集(mooc)
    File Transfer(并查集)
    堆中的路径(MOOC)
    智慧树mooc自动刷课代码
    Hibernate三种状态的区分。
    Hibernate中get和load方法的区别
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/8571844.html
Copyright © 2011-2022 走看看