Java中的链接列表实现

时间:2018-04-30 12:28:17

标签: java linked-list

我尝试使用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 :(得分:1)

就是这样的。搜索最后一个元素,一旦找到,您就可以添加新项目。

//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接口

答案 1 :(得分:0)

将列表头部的下一个元素设置为您想要追加的元素是不够的。

你需要沿着列表走下去,直到找到结束,然后才附加最新元素

答案 2 :(得分:0)

这就是你使用this.next的方式。

尝试这样的事情:

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;
    }
}