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

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

    思路:这个题目是一个很经典的链表操作题目,涉及很多链表指针操作,考验代码功底。因为是单向链表,如果按照最普通的思路来解和求链表中的倒数第k个节点一样,会有许多不必要的遍历。那么就需要在指针操作上想办法。下面是一个比较好的解决思路:

    首先需要设置4个指针,一个pHead用来保存反转后的头结点,pNode代表当前节点,pPre代表当前节点的前一个节点,pNext代表当前节点的下一个节点。

    举个栗子:a->b->c->d->e->f->g->null

    当前节点指向a,其他节点暂时为null,然后令pNext指向b,判断pNext是否为null,如果为null则说明已经到链表尾部,令pHead指向pNode,然后令pNext指向pPre。然后再令pPre指向pNode,pNode指向pNext。直到链表尾部退出循环。

    实现代码:

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode ReverseList(ListNode head) {
            ListNode pNode = head;
            ListNode pPre = null;
            ListNode pHead = null;
            
            while(pNode != null) {
                ListNode pNext = pNode.next;
                if(pNext == null) {
                    pHead = pNode;
                }
                pNode.next = pPre;
                
                pPre = pNode;
                pNode = pNext;
            }
            return pHead;
        }
    }
  • 相关阅读:
    第十二周作业
    十一周作业
    第十周作业
    第九周作业
    2019年春第八周作业
    第五周课程总结&实验报告(三)
    第四周课程总结&实验报告(二)
    第三周课程总结&实验报告(一)
    第二周课程总结
    2019春总结作业
  • 原文地址:https://www.cnblogs.com/wxisme/p/5295340.html
Copyright © 2011-2022 走看看