2015-06-28 8 views
0

Я создал связанный список, который дает ниже ошибки. не уверен, что это неправильно, муравей предложениеСвязанный список: Не работает как ожидалось

Error/OP - Список является [email protected]

Я не уверен, что это значение в выходе предназначено для.

Процесс закончил с кодом выхода 0

public class LinkedList{ 

public static void main (String[] a){ 
    LinkedListcreation L1 = new LinkedListcreation(); 
    L1.addNodeAtEnd("1"); 
    System.out.print("List is " + L1); 
} 

} 

class LinkedListcreation { 

int listcount; 
node head; 

LinkedListcreation() { 
    head = new node(0); 
    listcount=0; 
} 


node Temp; 

void addNodeAtEnd(Object d){ 
    node Current = head; 
    Temp = new node(d); 
    while (Current.getNext()!= null){ 
     Current = Current.getNext(); 
    } 

    Current.setNext(Temp); 

    listcount++; 
} 

} 


class node { 

Object data; 
node next; 

node(Object d) { 
    next = null; 
    this.data=d; 
} 

node(Object d, node nextNode) { 
    next = nextNode; 
    this.data=d; 
} 

    public Object getdata(){ 
    return data; 
    } 


public void setdata(int d){ 
    data = d; 
} 

public node getNext(){ 
    return next; 
} 

public void setNext (node nextValue){ 
    next = nextValue; 
} 
} 
+0

Какой результат вы ожидали? – user007

+0

Не забудьте придерживаться правил именования Java. Это облегчает чтение. – Mordechai

ответ

0

Как все говорили, вы должны переопределить toString(). Здесь у вас есть правильная реализация:

public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    sb.append("["); 
    sb.append(head.data.toString()); 

    node n; 
    while(n = head.getNext() != null) 
     sb.append(", " + n.data.toString()); 

    sb.append("]"); 
    return sb.toString(); 
} 
1

Ваш код все в порядке, но для того, чтобы напечатать полезную информацию об объекте (ваш список в этом примере), вам необходимо переопределить метод toString в вашем LinkedListcreation класс.

Например:

public String toString() { 
    return "List with " + this.listcount + " nodes."; 
} 
0

вы пытаетесь напечатать объект списка, а не элемент, который вы добавили и более того, что вы видите, не ошибка. проверьте метод toString() в java, чтобы понять результат, который вы видите.

Измените свой основной(), как показано ниже, чтобы увидеть добавленный элемент.

public static void main (String[] a){ 
    LinkedListcreation L1 = new LinkedListcreation(); 
    L1.addNodeAtEnd("1"); 
    System.out.print("List is " + L1.head.next.data); 

}

выход: Список 1

+0

И если список содержит более одного элемента? – Mordechai

+0

, очевидно, вам нужно написать еще один метод для извлечения элемента по конкретному индексу :-) ссылка: http://crunchify.com/how-to-implement-a-linkedlist-class-from-scratch-in- java/ – KDP

+0

@KDP .... им немного путают ......... как в приведенном ниже примере они могут печатать связанный список, просто используя имя linedlist .... http://crunchify.com/how-to-implement-a-linkedlist-class-from-scratch-in-java/ – Green

-1

код содержит ошибки компилятора. Попробуйте исправленный код ниже

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace ConsoleApplication1 
{ 
    class LinkedList 
    { 

     static void Main(String[] a){ 
      LinkedListcreation L1 = new LinkedListcreation(); 
      L1.addNodeAtEnd("1"); 
      Console.WriteLine("List is " + L1); 
     } 

    } 

    public class LinkedListcreation 
    { 

     int listcount; 
     node head; 

     public LinkedListcreation() 
     { 
      head = new node(0); 
      listcount = 0; 
     } 


     node Temp; 

     public void addNodeAtEnd(Object d) 
     { 
      node Current = head; 
      Temp = new node(d); 
      while (Current.getNext() != null) 
      { 
       Current = Current.getNext(); 
      } 

      Current.setNext(Temp); 

      listcount++; 
     } 

    } 


    public class node 
    { 

     Object data; 
     node next; 

     public node(Object d) 
     { 
      next = null; 
      this.data = d; 
     } 

     node(Object d, node nextNode) 
     { 
      next = nextNode; 
      this.data = d; 
     } 

     public Object getdata() 
     { 
      return data; 
     } 


     public void setdata(int d) 
     { 
      data = d; 
     } 

     public node getNext() 
     { 
      return next; 
     } 

     public void setNext(node nextValue) 
     { 
      next = nextValue; 
     } 
    } 

} 
​ 
+0

Umm ... На каком языке _this? _ Наверняка нет Java. – Mordechai

0

В вашем коде не было ошибок. Если вы хотите распечатать узлы в своем списке, вам просто нужно добавить еще одну функцию в ваш класс LinkedListcreation, который будет перебирать ваш список и распечатывать данные каждого узла. Добавьте этот блок в свой класс LinkedListcreation.

public void printList(){ 
node current = head.next; 
while(current!=null){ 
    System.out.println("node's data is: "+ current.getdata()); 
    current = current.getNext(); 
} 

}

Также в основной функции называют вышеупомянутую функцию с помощью списка в объект L1.

L1.printList(); 
Смежные вопросы