小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

劍指Offer_編程題_從尾到頭打印鏈表

 行者花雕 2020-05-25

題目描述

輸入一個(gè)鏈表,按鏈表從尾到頭的順序返回一個(gè)ArrayList。
 
 

答案

有三種思路,
第一就是利用棧先入后出的特性完成,
第二就是存下來(lái)然后進(jìn)行數(shù)組翻轉(zhuǎn)。
第三是利用遞歸。

 

// 數(shù)組反轉(zhuǎn)實(shí)現(xiàn)方式

作者:小輝哥哥
鏈接:https://www./questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035?f=discussion
來(lái)源:??途W(wǎng)
 

 

 

 
public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> list=new ArrayList<Integer>();
        ListNode pre=null;
        ListNode next=null;
        while(listNode!=null){
            next=listNode.next;
            listNode.next=pre;
            pre=listNode;
            listNode=next;
        }
        while(pre!=null){
            list.add(pre.val);
            pre=pre.next;
        }
        return list;
    }
}
 
 
鏈接:https://www./questionTerminal/d0267f7f55b3412ba93bd35cfa8e8035?f=discussion
來(lái)源:牛客網(wǎng)

java 遞歸超簡(jiǎn)潔版本
public class Solution {
    ArrayList<Integer> arrayList=new ArrayList<Integer>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        if(listNode!=null){
            this.printListFromTailToHead(listNode.next);
            arrayList.add(listNode.val);
        }
        return arrayList;
    }
}  
 

創(chuàng)建鏈表相關(guān),頭插法和尾插法

  

 

 關(guān)于頭插法,可以next可以理解成前一個(gè)節(jié)點(diǎn)地址,插入順序:

1、頭節(jié)點(diǎn)傳入,開(kāi)始創(chuàng)建A數(shù)據(jù),頭節(jié)點(diǎn)的next指向A數(shù)據(jù)的內(nèi)存地址,A節(jié)點(diǎn)的next替換成頭節(jié)點(diǎn)的

2、頭節(jié)點(diǎn)再傳入,創(chuàng)建B數(shù)據(jù),頭節(jié)點(diǎn)的next又換成了指向B的內(nèi)存地址,B節(jié)點(diǎn)的next替換頭節(jié)點(diǎn)的A;

總結(jié)一下:插入時(shí)候,一直在頭節(jié)點(diǎn)的上面插入數(shù)據(jù),原來(lái)的數(shù)據(jù)被“頂”上去了;

     頭插法遍歷的時(shí)候,頭節(jié)點(diǎn)開(kāi)始,一個(gè)一個(gè)往上遍歷。這樣最后插入的就作為第一個(gè)輸出出來(lái)了;

     尾插法編練插入,比較好理解,就是一直在“尾巴”追加,遍歷時(shí)候從頭開(kāi)始,第一個(gè)插入的就第一個(gè)輸出出來(lái); 

public class Test {

static Node headNode;

class Node {
private Node next;//指針
private int data;//數(shù)據(jù)域
}

//尾插法創(chuàng)建單鏈表 隊(duì)列形式先進(jìn)先出
public void back(Node node, int data) {
if (data < 10) {
Node next = new Node();
next.data = data;
next.next = null;
node.next = next;
back(next, ++data);
}
}

//頭插法創(chuàng)建單鏈表 棧形式先進(jìn)后出
public void head(Node node, int data) {

if (data < 10) {
Node next = new Node();
next.next = node.next;


next.data = data;
node.next = next;
System.out.println("遞歸參數(shù):" + node.data);
head(node, ++data);
}
}

public static void main(String[] args) {
Test test = new Test();
headNode = test.new Node();//頭指針
// new Test().back(headNode, 0);//前插法
new Test().head(headNode, 0);//后插法
System.out.println("創(chuàng)建后的鏈表是:");//0 1 2 3 4 5 6 7 8 9 10
while (headNode.next != null) {
headNode = headNode.next;
System.out.print(headNode.data + " ");
}
}

}

//————————————————
//版權(quán)聲明:本文為CSDN博主「另一個(gè)絕影」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
//原文鏈接:https://blog.csdn.net/weixin_37817685/article/details/83305972

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多