2015-11-02 4 views
-2
public class Node { 

    int item; 
    Node next; 

    public Node() { 

    item = 0; 
    this.next = null; 

    } 
    public Node(int c) { 

     item = c; 
     next = null; 

    } 
    public Node(int c, Node next) { 

    item = c; 
    this.next = next; 

    } 

    } 

public class List { 

    Node head; 
    Node tail; 
    int size; 

    public boolean isEmpty(){ 
     return head == null; 
    } 

    public int size(){ 
     return size; 
    } 

    public void addF(int i){ 

     head = new Node(i, head); 
     size++; 
    } 

    public void addE(int i){ 

     if(head == null){ 

      Node s = new Node(i); 
      tail = head; 
     }else{ 

      Node s = head; 
      while(s.next != null){ 
       s = s.next; 
      } 
      s.next = new Node(i); 
      size++; 
     } 
    } 

    public static void main(String[] args){ 

     List l = new List(); 
     l.addF(55); 
     l.addF(56); 
     l.addF(57); 
     l.addE(54); 
     l.addE(53); 
     System.out.println(l.toString()); 
    } 

    public String toString() { 

     String result = "[ "; 

     Node current = head; 

     while (current != null) { 

     result = result + current.item + " "; 

     current = current.next; 
       } 
       return result + "]"; 
       } 
} 

Может ли кто-нибудь объяснить, как метод addE() опишите else для меня, пожалуйста? Я понимаю, если утверждение, но не другое. Я пытаюсь понять это лучше. Спасибо!!!LinkList для новичков

+2

Основываясь на том, что вы в настоящее время, я не вижу смысла поддержания 'tail' указатель, если вы планируете ходить список из при вставке нового «узла» в конец. Пожалуйста, уточните свой вопрос, потому что, поскольку он стоит сейчас, я не думаю, что вы можете получить точный ответ. –

+0

@TimBiegeleisen Из того, что я вижу в коде, 'tail' даже не обновляется нигде. Вероятно, это просто артефакт из какого-то другого кода. –

+1

@lc. Я говорю следующее: прежде чем мы попытаемся ответить, нам нужно знать, что сам код пытается сделать. Как сейчас, этот вопрос на самом деле требует рефакторинга и объясняет, что делает этот код. –

ответ

0

Я думаю, что код должен выглядеть следующим образом: -

public void addE(int i){ 

     if(head == null){ 

      Node s = new Node(i); 
      head=s; //If the link list is empty then the first element(node) is the head 
     }else{ 


      while(s.next != null){ //Traverse the entire linked list until you raech the tail 
       s = s.next; 
      } 
      s.next = new Node(i);//add the new node 
      size++; 
     } 
    }