Java - 使用for循环

时间:2016-02-25 03:37:06

标签: java linked-list reverse

所以现在的挑战是尝试使用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;
    }
}

如您所见,它只是重复我在原始链表中的最后一个整数。任何帮助将不胜感激!

2 个答案:

答案 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个遍历到所需的索引之外别无他法。