【发布时间】:2016-06-07 15:56:14
【问题描述】:
所以现在的挑战是尝试使用 LinkedList L 并创建一个新的 LinkedList Reverse 与 L 的反向。我需要使用 forloop 来完成此操作。这是我目前所拥有的:
public void ReverseL(Intco obj) {
ListNode p = obj.c;
ListNode RevL = c;
int index = obj.get_howmany();
if (obj.c != null) {
while (this.get_howmany() != obj.get_howmany()) {
p = obj.c;
for (int i = index; i <= 0; i--) {
p = p.link;
}
RevL = new ListNode(p.info, RevL);
howmany++;
index--;
}
}
c = RevL;
}
Intco 是我正在使用的课程。 Howmany 是 LinkedList 中有多少整数的计数器(它由我创建的插入方法递增)。
假设我将 4 个整数添加到 L,所以 L 将包含: L -> 5 -> 12 -> 25 -> 15 -> 空
对于 L,多少 = 4。
forloop 将遍历 L,直到达到第 4 个值,将第 4 个值插入 RevL。再次通过 L,但现在达到第 3 个值 (25),然后将第 3 个值插入 RevL。
我遇到的问题是我的输出是:
Reverse of L (Reverse):
15
15
15
15
P:
15
25
12
5
以防万一,这里是 LinkedList 的私有类:
private class ListNode {
private int info;
private ListNode link;
public ListNode() {
info = 0;
link = null;
}
public ListNode(int i, ListNode next) {
info = i;
link = next;
}
}
如你所见,它只是重复了我在原始链表中的最后一个整数。任何帮助将不胜感激!
【问题讨论】:
-
这里的
Intco L是什么? -
它正在接收一个包含 LinkedList 的 Intco 对象 L。 @Bunti 我将其更改为 obj 以使其更加清晰。你问的是这个吗?
-
你想用一个
while循环和for循环来实现什么?而且,当您以相反的顺序进行迭代时,您会尝试访问当前节点的next链接,该链接在循环的第一次运行中不存在。但是您需要有一种按索引访问每个元素的方法,以便您可以轻松访问实际的前一个节点。因为这是一个单链表,所以您不能以相反的顺序循环并使用next元素访问下一个元素 -
使用 'while' 循环,我希望在 RevL 包含与通过方法传递的 obj 相同数量的整数之后,一切都停止。 'for'循环是遍历通过的obj。
标签: java linked-list reverse