【问题标题】:How to create a Java ArrayList in C如何在 C 中创建 Java ArrayList
【发布时间】:2016-08-11 07:56:20
【问题描述】:

这是我的代码

typedef struct _recorrido Elemento;
typedef struct _lista_E Lista;

struct _recorrido {
    int valor_nodo;
    Elemento *siguiente;
};

struct _lista_E {
    Elemento *primero;
    Elemento *ultimo;
    int num_elementos;
};


[...]
element = (Elemento *) malloc(sizeof (Elemento));

我想在Java中创建一个这样的arrayList

List[] object = new List[10];

但是在 C... 我的意思是一系列列表。我认为我必须创建一个指向每个列表元素的指针数组,但不知道如何。

【问题讨论】:

  • 如果您需要通用列表,请使用 (int list[10]) 之类的普通列表或实现一个链表供您自己使用。您还可以通过简单的数组(通过实现添加/删除/调整数组大小的函数)创建一个类似于 java 中的列表。只是需要一些时间......

标签: java c list pointers arraylist


【解决方案1】:

您可以像这样创建列表数组:

Lista **array = (Lista**)calloc(10, sizeof(*array));

for(int i = 0; i < 10; ++i){
    array[i] = (Lista*)malloc(sizeof(**array));
}

或者只是:

Lista array[10];

但最后一个数组将在堆栈上创建,它不适合大型结构。

【讨论】:

  • 我在论坛上读到,每次你动态分配内存时,都需要释放它。
  • 是的。您应该注意每个 malloc/calloc/realloc/new。要释放这个二维数组,您必须在循环中使用 free,就像在创建和之后释放指针 Lista* 一样。
猜你喜欢
  • 2011-05-23
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
相关资源
最近更新 更多