如何在c中创建数组的链表



我想创建一个包含可变长度数组(如int A[n][n](的链表。

我试着这样做,但我得到了错误Incomplete type is not allowed

struct Node {
int A[n][n];
struct Node* next;
};

有什么办法在c中做到这一点吗?

您需要使用在堆上分配的int **才能具有可变长度。要做到这一点,您需要一个构造函数和一个析构函数。我还添加了在构造函数中指定下一个节点的功能。

struct Node{
size_t size;
int **A;
struct Node* next;
};
void construct_node(struct Node *node, size_t n, struct Node *next_node) {
node->size = n;
node->A = malloc(n * sizeof(int *));
for (size_t i = 0; i < n; i++) {
node->A[i] = malloc(n * sizeof(int));
}
node->next = next_node;
}
void destruct_node(struct Node *node) {
for (size_t i = 0; i < node->size; i++) {
free(node->A[i]);
}
free(node->A);
// You probably also want to call destruct_node on the next node to free the entire list:
// if (node->next) destruct_node(node->next);
}

完成此操作后,创建节点需要以下代码:

int size = 10;
struct Node your_node;
construct_node(&your_node, size, NULL);
// Do your stuff with the node
destruct_node(&your_node);

相关内容

  • 没有找到相关文章

最新更新