2016-10-21 60 views
0

我在處理搜索和刪除鏈接列表的小java活動時遇到了一些問題。如何在鏈接列表中搜索和刪除

這裏有問題:

  • 添加菜單方法主要以處理增加的頭,從該頭中刪除,並顯示鏈接列出。
  • 然後添加一個菜單選項,用於刪除列表中的特定元素並將其刪除(以便提示用戶輸入要刪除的字符串 - 然後在鏈接列表中找到該元素並從列表中刪除該元素)。

這裏是類:

public class LLNode { 

    private String data; 
    private LLNode next; 

    public LLNode() { 
     this.data = null; 
     this.next = null; 
    } 
    public LLNode (String newData) { 
     this.data = (newData); 
     this.next = null; 
    } 
    public void updateNode (LLNode nextOne) { 
     this.next = nextOne; 
    } 
    public String toString() { 
     return this.data; 
    } 
    public LLNode getNext() { 
     return this.next; 
    } 
} 


public class LList { 

    private LLNode head; 

    public LList() { 
     head = null; 
    } 
    public void addAtHead (String newData) { 
     LLNode newNode = new LLNode (newData); 
     newNode.updateNode(head); 
     head = newNode; 
    } 

    public void display() { 
     LLNode temp = head; 
     while (temp != null) { 
      System.out.println (temp); 
      temp = temp.getNext(); 
     } 
    } 

    public LLNode deleteAtHead () { 
     LLNode removedOne = head; 
     head = head.getNext(); 
     return removedOne; 
    } 

} 

public class LinkedListExample { 

    public static void main(String[] args) { 
     LList list = new LList(); 

     list.addAtHead("Bob"); 
     list.addAtHead("Tom"); 
     System.out.println("The list is "); 
     list.display(); 

     LLNode removedOne = list.deleteAtHead(); 
     System.out.println("After delete, the list new is "); 
     list.display(); 
     System.out.println("The one that was deleted is..." + removedOne); 


    } 

} 
+1

你有什麼問題? –

+0

你嘗試了什麼?我們不在這裏進行鍛鍊;) –

+1

確切的問題是什麼?你的代碼看起來沒問題,只是'deleteAtHead'和'addAtHead'方法可以從空檢查中受益。 我認爲這段代碼是家庭作業,因爲java有一個內置'LinkedList'。 –

回答

0
  1. 有關創建菜單我會建議使用while循環。您想使用某種掃描儀來檢查有效輸入並檢查菜單的輸入。

{

public void main(String[] args) { 
string input; 

Scanner n = new Scanner(System.in); 
while (!(input.equals("exit")) { 

System.out.println("menu item 1"); 
System.out.println("menu item 2"); 
System.out.println("etc"); 

input = n.nextLine(); 
switch (input) { 
case "menu 1": //do whatever menu 1 is 
case "menu 2": //do whatever menu 2 is 
case "exit": //exit // save whatever 
default: System.out.println("message not understood"); 
    } 
} 

這是一個包含方法。這應該給你一個關於如何在鏈表中找到元素以及如何刪除元素的強烈指示。 (我會留給你,因爲這相對容易,你需要學習)。

public boolean contains(String str) { 
Node ref; 
while (ref != null) 
    ref = ref.next; 
    if (ref.data == str) { 
    return true; 
    } 
return false; 
} 
+0

其他注意事項:默認構造函數設置您將訪問爲null的值是不好的。將數據字段設置爲「」(空字符串)。在這種情況下,你可以說「好的Node類是私人的,用戶無法訪問它」那麼爲什麼你會有一個默認的構造函數?請更改默認構造函數或將其刪除。 (它只是不好的做法) – Jjoseph