Реализовать связанный список в Java - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь реализовать связанный список с Java, но у меня есть проблема, размер моего списка может быть только 2 узла, и он будет перезаписан.

Вот код ..

Класс для одного узла:

public class ListElement
{
    private String content;

    private ListElement next;

    public ListElement(String content){
        if (content == null){
            System.out.println("NullpointerException");
        }
        this.content = content; 
    }

    public String getContent() { return content; }

    public String setContent(String content){
        this.content = content;
        return content;
    }

    public ListElement getNext(){
        return next;
    }

    public ListElement setNext(ListElement next){
        this.next = next;
        return next;
    }
}

Класс для списка ...

public class List
{
    public ListElement head;
    public ListElement next;

    public List()
    {
        // no-op
    }

    public  void append(String content)
    {
        if(head == null){
            this.head = new ListElement(content);
        }
        else{
            this.next = new ListElement(content);
            this.next.setNext(null);
            head.setNext(this.next);
            head.getNext();
        }
    }   
}  

Спасибо за вашу помощь и время

Ответы [ 3 ]

0 голосов
/ 30 апреля 2018

Это то, как вы используете этот .следующий.

Попробуйте что-то вроде этого:

public  void append(String content)
{
    if(head == null){
        this.head = this.next = new ListElement(content);
    }
    else{
        ListElement next = new ListElement(content);
        this.next.setNext(next);
        this.next = next;
    }
}   
0 голосов
/ 30 апреля 2018

Это было бы что-то подобное. Найдите последний элемент и, найдя его, вы можете добавить новый элемент.

//head not null
else{
    ListElement last = this.next;
    if(last == null){
        this.next = new ListElement(content)
    }
    else{
        while (last.getNext() != null){
            last = last.getNext()
        }
        last.setNext(new ListElement(content))
   }
}

Возможно, вы также захотите предотвратить циклы в вашем LinkedList и реализовать интерфейс Iterator

0 голосов
/ 30 апреля 2018

Недостаточно установить следующий элемент от заголовка списка как элемент, который вы хотите добавить.

Вам нужно будет пройтись по списку, пока не найдете конец, и только затем добавить туда последний элемент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...