【发布时间】:2014-12-13 23:10:43
【问题描述】:
我正在制作一种方法来将节点添加到名为“public void add(int index, T value)”的列表中。
此方法会将一个值放入索引中,然后将具有指向列表中下一个和上一个元素的指针。我弄乱了指向以前节点的指针,我一直在坐下来试验,但没有让它工作。
示例:我们有一个包含整数值 [2, 4, 6] 的列表 实例变量: 节点头、尾; int 数量,变化;
内部类的实例变量是: T值; 节点上一个,下一个;
输入:
add(1, 3);
System.out.println(list.toString());
System.out.println(list.backwardsString());
预期输出:
[2, 3, 4, 6]
[6, 4, 3, 2]
到目前为止我的代码:
public void add(int index, T value) {
if (index < 0 || index > amount) {
throw new IndexOutOfBoundsException("Index is not between 0 and amount!");
}
if (value== null) {
throw new NullPointerException("Value can't be null!");
}
if (amount == 0) {
head = tail= new Node<>(value, null, null);
}
else if (index == 0) {
head = head.prev= new Node<>(value, null, head);
}
else if (index == amount) {
tail = tail.next= new Node<>(value, tail, null);
}
else {
Node<T> p = head;
for (int i = 1; i < index; i++) {
p = p.next;
}
p.next= new Node<>(value, p, p.next);
p = tail;
for (int i = amount; i > index; i--) {
p.prev= new Node<>(value, p.prev, p);
p = p.prev;
}*/
}
amount++;
changes++;
}
在这个场合我也会问怎么做
p.prev.next 或 p.next.prev
工作?
【问题讨论】:
标签: java list pointers linked-list doubly-linked-list