首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将已存在的节点添加到链表的开头?

如何将已存在的节点添加到链表的开头?
EN

Stack Overflow用户
提问于 2018-04-07 09:56:52
回答 1查看 74关注 0票数 0

这是一个学校作业,有人能给我指个方向吗?我试图使用递归将链表在奇数和偶数之间拆分,但.add(IntNode)似乎出了问题,它总是在前两个节点之间交替,就像是在覆盖它。我已经解决了我能想到的所有问题,似乎我不正确地使用了add。我必须编辑odds和evens方法,并保留原始链表为空。

这是我的代码,任何帮助都将不胜感激。

测试代码:

代码语言:javascript
运行
复制
public class Test1 {

    public static void main(String[] args) { 
        IntLinkedList test = new IntLinkedList(new int[]{3,5,4,6,8,2,1,4,3,2,5,3,6,3});
        System.out.println("Test list: "+test);

        IntLinkedList oddOnes = new IntLinkedList(), evenOnes = new IntLinkedList();
        test.split(oddOnes,evenOnes);
        System.out.println("Test list should be empty: "+test);
        System.out.println("Odds: "+oddOnes);
        System.out.println("Evens: "+evenOnes);
    }

}

IntLinkedList相关方法:

代码语言:javascript
运行
复制
public void add(IntNode node) { 
    if (first != null) {
        node.setNext(first);
        first = node;
    } else {
        first = node;
    }
}

public void split(IntLinkedList odds, IntLinkedList evens) {
    IntNode curr = first;

     if (curr != null) {
        if (curr.getData() % 2 == 0) {
            evens.add(curr);
        } else {
            odds.add(curr);
        }
        System.out.println(curr.getData());
        remove(0);
        split(odds, evens);
    }
}

public void remove(int index) {
    IntNode curr = first;
    IntNode past = null;
    int currIndex = 0;

    while (curr != null && currIndex < index) {
        past = curr;
        curr = curr.getNext();
        currIndex++;
    }

    if (past == null && curr != null && index > -1) {
        first = first.getNext();
        curr.setNext(null);
    } else if (curr != null && index > -1) {
        past.setNext(curr.getNext());
    }
}

IntNode:

代码语言:javascript
运行
复制
public class IntNode {

    private int number;
    private IntNode nextInt;

    public IntNode(int number) {
        this.number = number;
    }

    public IntNode(int number, IntNode next) {
        this.number = number;
        this.nextInt = next;
    }

    public IntNode getNext() {
        return nextInt;
    }

    public void setNext(IntNode nextInt) {
        this.nextInt = nextInt;
    }

    public int getData() {
        return number;
    }

}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49703060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档