Heim  >  Artikel  >  Java  >  Beispielanalyse der Java-Implementierung des Druckens verknüpfter Listen vom Ende bis zum Anfang

Beispielanalyse der Java-Implementierung des Druckens verknüpfter Listen vom Ende bis zum Anfang

黄舟
黄舟Original
2017-10-16 09:51:591361Durchsuche

In diesem Artikel wird hauptsächlich die Java-Programmierung vorgestellt, um das Drucken von Codebeispielen für verknüpfte Listen vom Ende bis zum Anfang zu implementieren. Der Herausgeber findet es ziemlich gut, daher werde ich es hier als Referenz für bedürftige Freunde teilen.

Problembeschreibung: Geben Sie den Kopfknoten einer verknüpften Liste ein und drucken Sie den Wert jedes Knotens vom Ende bis zum Kopf aus.

Definieren Sie zunächst die verknüpften Listenknoten


public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val){
      this.val = val;
    }
  }

Idee 1: Diese Frage verwendet offensichtlich die Idee von ​​​​Stapel, zuletzt im ersten Zum Beenden durchlaufen Sie zunächst die verknüpfte Liste und verschieben die Knotenwerte nacheinander in den Stapel. Zum Schluss platzen Sie den Stapel, nachdem Sie den Stapel durchlaufen haben.


public static Stack<Integer> printListReverse_Stack(ListNode listNode){
    Stack<Integer> stack = new Stack<Integer>();
    if(listNode != null){
      ListNode p = listNode;
      while(p != null){
        stack.add(p.val);
        p = p.next;
      }
    }
    return stack;
  }

Idee 2: Durchlaufen Sie die verknüpfte Liste direkt und fügen Sie die ArrayList der Reihe nach gemäß der Kopfeinfügungsmethode ein


public static ArrayList<Integer> printListFromTailToHead(ListNode listNode){//表头也存储元素
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    int add = 0;
    ListNode p = listNode;
    while(p != null){
      print.add(0, p.val);
      p = p.next;
    }
    return print;
  }

Idee 3: Sie können die Idee der Rekursion (im Wesentlichen auch die Idee des Stapels) verwenden


public ArrayList<Integer> printListReversely_Recursively(ListNode listNode){
    ArrayList<Integer> print = new ArrayList<Integer>();
    if(listNode == null){
      return print;
    }
    print.addAll(printListReversely_Recursively(listNode.next));
    print.add(listNode.val);
    return print;
  }

Zusammenfassung

Das obige ist der detaillierte Inhalt vonBeispielanalyse der Java-Implementierung des Druckens verknüpfter Listen vom Ende bis zum Anfang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn