gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:53:49 25 4
gpt4 key购买 nike

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

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

创建类节点:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com