2016-12-07 6 views
0

Я уже искал одинаковые проблемы на этой странице, и я нашел решение, которое должно работать. Но у меня все еще есть проблема, что программа не удаляет первый элемент в моем списке. В методе remove() head = head.next; должен удалить первый элемент.Удалить первый элемент связанного списка

Если я запустить программу вывод: пустой список: [5,7] вместо пустого списка: [6,7]

Может кто-то пожалуйста подскажите, что не так с головой элемента или моей реализации.

public class HeadList { 

    Entry head; 
    Entry tail; 

    public HeadList() { 
     head = null; 
     tail = null; 
    } 

    public void add(int info) { 
     Entry p = new Entry(null, null,info); 
     if(head == null && tail == null){ 
      head = p; 
      tail = p; 
     }else{ 
      tail = tail.next = p; 
     } 
    } 

    public int remove(int index) { 
     Entry p = head; 

      for(int i=1; i < index; i++) { 
       p = p.next; 
      } 
      if(p.next != null && p.next != head){ 
       int ausgabe = p.elem; 
       p.next = p.next.next; 
       return ausgabe; 
      }else if(index == 0){ 
       int ausgabe = p.elem; 
       head = head.next; 
       return ausgabe; 
      } 
      else return 0; 
    } 

    private void setHead(Entry newHead) { 
     //TODO 
    } 

    public void reverse() { 
     //TODO 
    } 

    public String toString() { 
     String out = "["; 
     if (head != null) { 
      out += head.elem; 
      Entry tmp = head.next; 
      while (tmp != null) { 
       out = out + "," + tmp.elem; 
       tmp = tmp.next; 
      } 
     } 
     out += "]"; 
     return out; 
    } 

    public static void main(String[] args) { 
     HeadList l = new HeadList(); 
     l.add(5); 
     l.add(6); 
     l.add(7); 
     l.remove(0); 
     System.out.println("empty list: " + l); 
     // Test implementation 
    } 

    class Entry { 

     Entry first; 
     Entry next; 
     int elem; 

     public Entry(Entry first, Entry next, int elem) { 
      this.first = first; 
      this.next = next; 
      this.elem = elem; 
     } 
    } 
} 
+0

Я понял! Изменен if-Function в remove() на (p.next! = Null && index! = 0) – Philipp

+0

Вы можете ответить на свой вопрос и пометить его как ответ. – LeHill

ответ

0

Я понял! Измените if-функцию в remove() на (p.next != null && index != 0)