我尝试使用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();
}
}
}
感谢您的帮助和时间
答案 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;
}
}