2016-10-21 4 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

관련 문제