zoukankan      html  css  js  c++  java
  • 剑指Offer-15.反转链表(C++/Java)

    题目:

    输入一个链表,反转链表后,输出新链表的表头。

    分析:

    可以利用栈将链表元素依次压入栈中,再从栈中弹出元素重新建立链表,返回头节点。

    也可以在原有的链表上来翻转,先保存当前节点的下一个节点,然后将当前节点的next,指向当前节点的前一个节点,然后再将p和prev更新求解即可。

    程序:

    C++

    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            if(pHead == nullptr) return nullptr;
            ListNode* p = pHead;
            ListNode* pPrev = nullptr;      
            while(p){
                ListNode *pTemp = p->next;
                p->next = pPrev;
                pPrev = p;
                p = pTemp;
            }
            return pPrev;
        }
    };

    Java

    public class Solution {
        public ListNode ReverseList(ListNode head) {
            if(head == null) return null;
            ListNode p = head;
            ListNode pPrev = null;
            while(p != null){
                ListNode pTemp = p.next;
                p.next = pPrev;;
                pPrev = p;
                p = pTemp;
            }
            return pPrev;
        }
    }
  • 相关阅读:
    集合操作
    聚合函数
    图存储3-十字链表
    图存储2-邻接表
    图存储1 临接矩阵
    字符串逆序,字符串翻转
    读写文件
    加密算法
    静态变量-动态变量
    【Qt】UserDefindeControl
  • 原文地址:https://www.cnblogs.com/silentteller/p/11879333.html
Copyright © 2011-2022 走看看