Java - 使用 for 循环反转单向链接列表



所以现在的挑战是尝试采用一个 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)。因为它是一个单链表。除了将列表从第一个遍历到所需的索引之外,别无他法。

相关内容

  • 没有找到相关文章

最新更新