簡體   English   中英

如何在Java中顯示鏈表中的項目

[英]How to display items in a linked list in java

大家好,我想知道如何顯示鏈表中的所有節點。 這是我到目前為止的代碼。 應該使用Manager類來操作該列表。 movieNode類為電影創建新的列表節點。 我知道我也必須使用其他東西,但是我只是想讓列表的第一個元素顯示給初學者。

public class Manager {
    MovieNode head;

    public Manager (){
        head=null;
    }

    public void Add (MovieNode data) {
        if (head==null){
            head=data;
        }
    }
    public void Display () {
        int i=1;
        MovieNode temp=head;
        System.out.println("Displaying Movies");
        while (head!=null) {
            System.out.println(temp.getData().getName());
            head=null;
        }
    }
    }

還有,MovieNode類的代碼

public class MovieNode {
        private Movie data;
        private MovieNode next;

        public MovieNode (){
            data=null;
            next=null;
        }

        public MovieNode (Movie data){
            setData(data);

        }

        public void setData (Movie data){
            this.data=data;
        }
        public Movie getData (){
            return data;
        }
    }

希望這會幫助您入門。 這里有一些指針:

經理班

  • 您不需要Manager的顯式構造函數,因為您可以在線初始化head變量,並且無需將任何其他信息傳遞給構造函數
  • Java中的方法名稱通常為駝峰式,並以小寫字母開頭
  • 將新項目添加到鏈接列表時,可以僅傳遞data並在add方法中創建節點
  • 假設您不需要維護任何特殊訂單,則可以將新項目插入列表的開頭。 這樣可以節省遍歷整個列表查找尾巴或保留對尾巴的引用的時間。
  • 要顯示所有的電影,你只需要先從head ,並檢查是否有一個節點next列表。 如果您不需要實現此自定義方法,則建議將類實現為Iterable。 關於此主題的SO討論可以在這里找到

MovieNode類

  • 您只需要一個構造函數即可獲取data並設置私有變量
  • 您還需要next變量的getter和setter,以便保留列表結構並遍歷列表
  • toString()實現將允許直接打印此類的實例,如displayAllMovies()方法中一樣

電影課

  • 該類目前僅保留電影的title ,但是您可以根據自己的規范對其進行擴展。

這是代碼:

public class Manager {
    MovieNode head = null;

    public void addMovie(Movie data) {
        MovieNode newNode = new MovieNode(data);
        if (head == null) {
            head = newNode;
        } else {
            newNode.setNext(head);
            head = newNode;
        }
    }

    public void addMovieInOrder(Movie data) {
        MovieNode newNode = new MovieNode(data);
        if (head == null) {
            head = newNode;
        } else {
            MovieNode higher = head;
            MovieNode lower = null;

            // find the right position for newNode
            while(higher != null){
                if(newNode.compareTo(higher) > 0){
                    lower = higher;
                    higher = higher.getNext();
                }
                else break;
            }

            newNode.setNext(higher);
            if(higher == head) head = newNode;  //inserting as head
            else lower.setNext(newNode);
        }
    }

    public void displayAllMovies() {
        MovieNode node = head;

        if (node == null) {
            System.out.println("The list is empty!");
        }

        do {
            System.out.println(node.getData());
            node = node.getNext();
        } while (node != null);
    }

    public static void main(String[] args) {
        Manager manager = new Manager();
        manager.addMovieInOrder(new Movie("ddd"));
        manager.addMovieInOrder(new Movie("ccc"));
        manager.addMovieInOrder(new Movie("aaa"));
        manager.addMovieInOrder(new Movie("bbb"));
        manager.displayAllMovies();
    }
}

電影節點類:

public class MovieNode implements Comparable<MovieNode> {
    private Movie data;
    private MovieNode next = null;

    public MovieNode(Movie data) {
        this.data = data;
    }

    public void setData(Movie data) {
        this.data = data;
    }

    public Movie getData() {
        return data;
    }

    public void setNext(MovieNode node) {
        this.next = node;
    }

    public MovieNode getNext() {
        return next;
    }

    @Override
    public String toString() {
        return data.toString();
    }

    @Override
    public int compareTo(MovieNode otherMovieNode) {
        return data.compareTo(otherMovieNode.getData());
    }
}

電影課:

public class Movie implements Comparable<Movie> {
    private String title;

    public Movie(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return title;
    }

    @Override
    public int compareTo(Movie otherMovie) {
        return title.compareTo(otherMovie.title);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM