簡體   English   中英

如何讓用戶從Java中的單鏈列表中搜索

[英]How do I let the user search from a singly linked list in java

我已經完成了單鏈接,該鏈接將節點添加到文本文件的列表中。 現在,我試圖讓用戶從鏈接列表中選擇一個節點以檢入電影或從文本文件檢出電影。 我一直在努力解決這個問題,但沒有成功。 任何貢獻或幫助將不勝感激!

這是我的搜索功能不完整...

    public void search () 
{
    System.out.print ("Which one would like like to check out: ");
    Scanner check = new Scanner(System.in);
    String usercheck = check.next();


    SinglyLinkedList myList = new SinglyLinkedList();
    Node n = myList.gethead();
    for (int i = 0; i < myList.getSize; i++) 
    {
        if (n.getTitle.equals(usercheck))
        {
            return ("found");
        } else {
            return n;
        }

    n = n.getNext();
    }
}

這是我完成的單鏈接列表,供參考搜索功能...

public class SinglyLinkedList
{
    //Implement a Node
    private static class Node
    {
        private String[] actors;
        private String title;
        private String director;
        private String year;
        private int numActors;
        private String status;
        private String userID;
        private String date;

        private Node next;
        public Node(String e, Node n) 
        {
            String[] data = e.split(" ");
            title = data[0];
            director = data[1];
            year = data[2];
            numActors = Integer.parseInt(data[3]);
            actors = new String[numActors];

            int i = 0;

            for (i = 0; i < numActors; i++) 
            {
                actors[i] = data[4 + i];

            }

            status = data[4 + numActors];

            if (status.equals("out"))
            {
                userID = data[5 + numActors];
                date = data[6 + numActors];
            }



            next = n;
        }
        public int getNumActors()
        {
            return numActors;
        }
        public String gettitle() 
        {
            return title;
        }       
        public String[] getActors() 
        {
            return actors;
        }       
        public String getDirector() 
        {
            return director;
        }       
        public String getYear() 
        {
            return year;
        }       
        public String getStatus() 
        {
            return status;
        }       
        public String getUserID() 
        {
            return userID;
        }
        public String getDate() 
        {
            return date;
        }
        public Node getNext() 
        {
            return next;
        }
        public void setNext(Node n) 
        {
            next = n;
        }
    }

    //List Implementation
    private Node head = null;
    private Node tail = null;
    private int size = 0;
    public SinglyLinkedList() 
    {};
    public int getSize() 
    {
        return size;
    }
    public Node getHead()
    {
        return head;
    }
    public boolean isEmpty() 
    {
        return size == 0;
    }
    public String first() 
    {
        if(isEmpty()) 
        {
            return null;
        }
        return head.gettitle();
    }
    public String last() 
    {
        if(isEmpty()) 
        {
            return null;
        }
        return tail.gettitle();
    }
    public void addFirst(String e) 
    {
        head = new Node(e, head);
        if(size == 0) 
        {
            tail = head;
        }
        size++;
        System.out.println("Added head node with " + head.getDirector());
    }
    public void addLast(String e) 
    {
        Node newNode = new Node(e, null);
        if(isEmpty()) 
        {
            head = newNode;
        }else{
            tail.setNext(newNode);
        }
        tail = newNode;
        size++;
        System.out.println("Added tail node with " + tail.getDirector());   
    }
    public String removeFirst() 
    {
        if(isEmpty()) 
        {
            return null;
        }
        String answer = head.gettitle();
        head = head.getNext();
        size--;
        if(size == 0) 
        {
            tail = null;
        }
        System.out.println("Removed head node with " + answer);
        return answer;
    }
}

您的SinglyLinkedList實現很好,但是search()方法中存在一些問題。

每次調用search()都會創建一個new SinglyLinkedList 換句話說,您沒有使用先前從文本文件生成的列表。 將文件生成的列表作為方法參數傳遞,或使該列表成為全局變量以對其進行訪問。

另外,正如另一個用戶所說,您的搜索將不會編譯:您在方法為void時使用return ("found") 由於要返回一個值以使用戶知道已找到該值,因此您可以將方法重寫為

public String search()

String告訴Java該方法將返回String ,而void告訴Java在完成時不要期望任何值。

暫無
暫無

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

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