所以现在的挑战是尝试采用一个 LinkedList L,并创建一个新的 LinkedList 反向,与 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 中有多少个整数的计数器(它由我制作的插入方法递增)。
假设我在 L 中添加 4 个整数,因此 L 将包含: L -> 5 -> 12 -> 25 -> 15 -> 空
多少 = 4 对于 L。
for循环将通过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;
}
}
如您所见,它只是重复了我在原始链接列表中的最后一个整数。任何帮助将不胜感激!
尝试更改
for (int i = index; i <= 0; i--) {
p = p.link;
}
自
for (int i = index; i >= 0; i--) {
p = p.link;
}
你可以实现一个名为 get(int index) 的函数。通过它运行 for 循环。此 get 函数将遍历 n、n-1、n-2、...,2,1。
假设您有一个大小为 10 的列表。循环是这样的:
for(int i=size; i>0; i-- {
get(index);
}
现在如何实现get(int index)。因为它是一个单链表。除了将列表从第一个遍历到所需的索引之外,别无他法。