所以现在的挑战是尝试使用LinkedList L并以L的反向创建一个新的LinkedList Reverse。我需要用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 - &gt; 5 - &gt; 12 - &gt; 25 - &gt; 15 - &gt;空
对于L,howmany = 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;
}
}
如您所见,它只是重复我在原始链表中的最后一个整数。任何帮助将不胜感激!
答案 0 :(得分:0)
尝试更改
for (int i = index; i <= 0; i--) {
p = p.link;
}
到
for (int i = index; i >= 0; i--) {
p = p.link;
}
答案 1 :(得分:0)
您可以实现名为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)。由于它是一个单独的链表。除了将列表从第1个遍历到所需的索引之外别无他法。