这是家庭作业,但请注意,我已经在线寻求帮助(例如 http://www.sethi.org/classes/class_stuff/cis435/others/notes-java/data/collections/lists/simple-linked-list.html )和我的教科书,但我仍然遇到一些问题。
任何帮助将不胜感激...
现在我正在尝试插入值,但没有任何效果。无论是第一项、作为最后一项添加还是介于两者之间。
Node header = null; // First element of list.
Node back = null; // Last element of list.
public void insert(int i, double value){ //insert value before i-th element
Node e = new Node();
e.num = value;
Node curr = header;
for(int x=0;x<i;x++) {
if (i == 1) { //we want to insert as first thing
if (size == 0) { //its the FIRST time we add something
header.next = e;
e.next = back;
break;
} else if (size == 1){
e.next = header.next; //i.e. the second thing in the list
header.next = e;
break;
} else {
e.next = header.next.next; //i.e. the second thing in the list
header.next = e;
break;
}
}
else if (x == (i-1)) {
e.next = curr.next;
curr.next = e;
break;
}
curr = curr.next;
}
size = size+1;
}
不太确定为什么它不起作用。
谢谢!
最佳答案
出于某种原因,仍在学习编程的人会使事情变得比他们需要的复杂得多。我在学习 Java 时就这样做了,当我刚接触一门新语言时我仍然这样做,我标记的学生找到了新的和令人惊奇的方法来做到这一点。您在插入中进行了更多操作,然后需要有,例如,在特定索引处插入值的方法不应该检查它是否是要插入的第一个项目(不是说它不应该检查边界)。这是我将要执行的操作的伪代码。
insert(index, value)
if index>size
throw null pointer
traverse to index -1 //lets call this nodeI
create newnode and set value
set newnode.next to nodeI.next
set nodeI.next to newnode
increase size.
给你一些方便的提示,你应该有一个函数来从链接列表中获取一个元素,返回一个节点?例如公共(public)节点 elementAt(int index)?用它来遍历链表。如果你想追加到链接列表,试试这个
append(value)
insert(size-1,value)
如果你想在开头插入?一样的想法
insert(value)
insert(0,value)
关于java - 帮助在 Java 中制作单链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3756599/