zoukankan      html  css  js  c++  java
  • 剑指offer-从尾到头打印链表

    1.头插法,在原地遍历

    //先利用两个pre和next两个指针将头节点为cur的链表反转,
    //在依次遍历链表存储到一个ArrayList并返回
    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode cur) {
            ArrayList<Integer> list=new ArrayList<Integer>();
            ListNode pre=null;
            ListNode next=null;
            while(cur!=null){
                next=cur.next;
                cur.next=pre;
                pre=cur;
                cur=next;
            }
            while(pre!=null){
                list.add(pre.val);
                pre=pre.next;
            }
            return list;
        }
    }


    反转单向链表
    
    public ListNode reverse(ListNode head){
        ListNode pre=null;
    
        while(head!=null){
             ListNode next=head.next;//记录保留当前结点的下一个结点的地址
             head.next=pre;//当前结点指针域(原为下一个结点的地址)改为上一个节点的地址
             pre=head;//上一个结点变为当前结点,为之后的循环做准备
             head=next;//当前结点变为下一个结点,为之后的循环做准备
          }
    
          return pre;
        }
    
    作者:淡茶菌
    链接:https://www.zhihu.com/question/27090581/answer/223772820
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    

      

      

    链接:https://www.nowcoder.com/questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035
    来源:牛客网
    
    public class Solution {
         
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            ArrayList list=new ArrayList();
            if(listNode==null) return list;
            ListNode dummy=new ListNode(0);
            dummy.next=listNode;
            ListNode cur=listNode;
            // 链表就地反转
            while(cur.next!=null)
            {
                ListNode temp=cur.next;
                cur.next=temp.next;
                temp.next=dummy.next;
                dummy.next=temp;
            }
            ListNode head=dummy.next;
            while(head!=null)
            {
                list.add(head.val);
                head=head.next;
            } 
            return list;
             
        }
    }
  • 相关阅读:
    Difference Between Arraylist And Vector : Core Java Interview Collection Question
    Man's Best Friend: The Science Behind the Dog and Human Relationship
    我在微软那些事--微软面试
    北美PM活着的攻略
    C#图解教程 第二十一章 命名空间和程序集
    C#图解教程 第二十章 异步编程
    C#图解教程 第十九章 LINQ
    C#图解教程 第十八章 枚举器和迭代器
    C#图解教程 第十七章 泛型
    C#图解教程 第十六章 转换
  • 原文地址:https://www.cnblogs.com/Roni-i/p/10363153.html
Copyright © 2011-2022 走看看