2017-01-30 4 views
0

Мне нужно реализовать класс Node, где основными методами являются: getItem(), getNext(), setItem() и setNext(). Я хочу, чтобы узлы имели возможность хранить, по крайней мере, целочисленный диапазон по умолчанию в Java как «элемент»; «next» должен быть ссылкой или указателем на следующий узел в связанном списке или специальным Node NIL, если это последний узел в списке. Я также хочу реализовать конструктор с двумя аргументами, который инициализирует экземпляры с данным item (первый аргумент) и следующий узел (второй аргумент), я как бы ударил кирпичную стену и нуждаюсь в каком-то руководстве по реализации этого, любые идеи?Нужно руководство по созданию класса узлов (java)?

меня это до сих пор:

class Node { 


public Node(Object o, Node n) { 

} 
public static final Node NIL = new Node(Node.NIL, Node.NIL); 

public Object getItem() { 
    return null; 
} 
public Node getNext() { 
    return null; 
} 
public void setItem(Object o) { 

} 
public void setNext(Node n) { 

} 
} 
+1

Вы можете взглянуть на это: http://stackoverflow.com/questions/31544501/creating-a-node-class-in-java –

ответ

0

Я могу дать вам быстрый намек на то, как сделать это:

Class Node{ 

    //these are private class attributes, you need getter and setter to alter them. 
    private int item; 
    private Node nextNode; 

    //this is a constructor with a parameter 
    public Node(int item) 
    { 
     this.item = item; 
     this.nextNode = null; 
    } 

    // a setter for your item 
    public void setItem(int newItem) 
    { 
     this.item = newItem; 
    } 

    // this is a getter for your item 
    public int getItem() 
    { 
     return this.item; 
    } 

} 

Вы можете создать объект Node по телефону:

Node newNode = Node(2); 

Это не полное решение вашей проблемы, два конструктора параметров и ссылка последнего узла отсутствуют, но это shou ld приведет вас в правильном направлении.

0

Ниже приведен простой пример реализации узла (я переименовал элемент в значение для цели удобочитаемости). Это должно быть реализовано так или иначе, потому что подписи методов, кажется, навязаны вам. Но имейте в виду, что это определенно не лучший способ реализовать LinkedList.

public class Node { 
    public static final Node NIL = null; 
    private Integer value; 
    private Integer next; 

    public Node(Integer value, Node next) { 
     this.value = value; 
     this.next = next; 
    } 

    public Integer getValue() { 
     return this.value; 
    } 
    public Node getNext() { 
     return this.next; 
    } 

    public void setValue(Integer value) { 
     this.value = value; 
    } 

    public void setNext(Node next) { 
     this.next = next; 
    } 

    public boolean isLastNode() { 
     return this.next == Node.NIL || Node; 
    } 
} 


public class App { 
    public static void main(String[] args) { 
     Node lastNode = new Node(92, Node.NIL); 
     Node secondNode = new Node(64, lastNode); 
     Node firstNode = new Node(42, secondNode); 

     Node iterator = firstNode; 
     do() { 
      System.out.println("node value : " + iterator.getValue()); 
      iterator = iterator.getNext(); 
     } while (iterator == null || !iterator.isLastNode()); 
    } 
} 
+0

'Node.NIL' является объект, а не вызов метода. Таким образом, это не приведет к переполнению стека. –

+0

@ ChaiT.Rex да, это 'Node NIL = новый узел (Node.NIL, Node.NIL)'. Подойдите ближе, конструктор будет называть себя. Для правильной сборки «Node.NIL» требуется «Node.NIL». И это приведет к переходу stackoverflow. –

+0

Я действительно запускаю код. Это не приводит к переполнению стека. Вероятно, вы должны запустить код, а не гадать. –

0

При реализации пользовательского LinkedList/Tree нам нужен узел. Вот демонстрация создания Node и LinkedList. Я не включил всю логику. Просто базовый скелет находится здесь, и вы можете добавить больше на себя.

enter image description here

+1

Пожалуйста, не используйте скриншоты для кода. Вместо этого вставьте код в свой ответ, выберите его и нажмите кнопку '{}' в редакторе. –

+0

@ ChaiT.Rex Спасибо за информацию :) Я позабочусь об этом со следующего раза. –

Смежные вопросы