我正在尝试创建一个链接列表我有一个有效的插入方法但是我不知道如何将头设置到列表的前面。
public void insert(Object o) {
curr = new Link(o,curr);
if(ticker ==0){
head = curr;
tail = curr;
}
ticker++;
}
当它需要在前面时,这只是设置到列表的末尾。任何帮助将非常感激。如果你还需要其他任何东西来解决这个问题,请告诉我。
答案 0 :(得分:0)
我不确切知道您的链接是什么,但我认为您应该创建一个类似
的Node类class Node {
Object value;
Node next;
Node pre; // optional
}
你的头和尾将成为Node的一个实例。
答案 1 :(得分:0)
我认为你的问题在于Link
的构造函数。根据您的结果,新链接存储对旧链接的引用;这是相反的,因此您的列表是反向构建的。将Link参数的下一个节点设置为正在实例化的链接,类似于
public Link(Object value, Link previous) {
...
previous.nextLink = this;
...
}
链接列表的头部是指您添加的第一个元素,而不是您在评论中指出的最后一个元素。这只是术语。
您需要在插入方法设置else
中设置tail = current
分支,因此您始终可以参考列表的末尾。 (head
已经指向列表的开头,哪个节点是头部不会改变)事实上,如果你这样做,你甚至不需要变量{{1} },因为tail
将起到同样的作用。