java - 将整数添加到节点内的数组中

标签 java arrays integer addition

所以我的问题的概念是:假设我们有节点。每个节点都有一个整数数组。现在,我们必须在数组末尾添加一个整数。我们如何做到这一点?

这是我到目前为止所做的事情:

创建类节点:

public class Node {
private int[] data;

Node next;

public Node(int n, Node nxt) {
    data = new int[n];
    next = nxt;
}

}

然后是动态数组列表类:

public class DynamicArrayOfInts {

private Node head = null; 
private int numOfElementsPerNode = 0;

public DynamicArrayOfInts(int elementsPerNode) {
    numOfElementsPerNode = elementsPerNode;
}

public void add(int e) {

}
}

最佳答案

您应该在 Node 类中添加一个属性,以了解当前 Node 数组的当前索引。我还会在 DynamicArrayOfInts 中添加一个属性来保留当前节点的引用。

然后在你的 add 方法中,检查当前节点所拥有的数组是否未满(这可以很容易地完成,因为你知道索引的值和每个节点的元素数量)。

如果不是这种情况(或者第一次 add 调用的 head 为 null),则创建一个新节点并将该元素添加到其数组中,否则只需填充当前节点数组的下一个槽。

这就是我实现它的方式。

class DynamicArrayOfInts {
    private Node head, current; 
    private int numOfElementsPerNode;

    public DynamicArrayOfInts(int elementsPerNode) {
        if(elementsPerNode <= 0) 
            throw new IllegalArgumentException("elementsPerNode must be > 0");
        numOfElementsPerNode = elementsPerNode;
    }

    public void add(int e) {
        if(head == null){
            head = new Node(numOfElementsPerNode, null);
            head.data[head.index++] = e;
            current = head;
            return;
        }
        if(current.index == numOfElementsPerNode){
            Node n = new Node(numOfElementsPerNode, null);
            current.next = n;
            current = n;
        }
        current.data[current.index++] = e;
    }

    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        Node n = head;
        while(n != null){
            sb.append(Arrays.toString(n.data));
            n = n.next;
        }
        return sb.toString();
    }

    private static class Node {
        private int[] data;
        private int index;
        private Node next;

        public Node(int n, Node nxt) {
            data = new int[n];
            index = 0;
            next = nxt;
        }
    }
}

一个小的 main 来展示它的行为:

public static void main(String[] args){
    int[] toAdd = {5,7,10,-1};
    DynamicArrayOfInts d = new DynamicArrayOfInts(2);
    for(int i : toAdd){
        d.add(i);
        System.out.println(d);
    }
} 

输出:

[5, 0]
[5, 7]
[5, 7][10, 0]
[5, 7][10, -1]

关于java - 将整数添加到节点内的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23445252/

相关文章:

java - bufferedReader 和 InputStreamReader 总是抛出异常

java - Travis CI 使用 gradle 和 Antlr 构建错误

java - 无法弄清楚这个 Obj 文件解析器有什么问题

c - 如何在 C 中的整数数组中添加二次数列

c++ - 不同的答案 : two simple identical integer calculations?

indexing - 压缩排序的整数

java - 如何使用 Selenium 单击网页上的打印按钮

javascript - 如何在表单提交时添加嵌套对象?

C++ 创建数组?

c++ - 如何通过 C++ 从数字列表中生成 3 位数字?