数据结构将包含未知长度的字符串,并且能够在以后删除它们

时间:2013-09-28 10:45:49

标签: c arrays memory data-structures dynamic-memory-allocation

用于存储未知数量的值然后删除多个值的最佳数据结构是什么?

我正在读取一个文件,每一行都存储为一些更大的数据结构中的C字符串。每行可能少于20个字符,一个示例文件有300000行。无论我将使用什么样的数据结构,只会在它最初的创建时增加大小;从那里它只会​​缩小尺寸。我会用什么?在Java中我会使用Array List或者Vector。动态数组可以工作,如果是,它会是什么样子?

char aLine[21];
char *data = malloc(aLine);
fp = fopen("datafile", "r");
if(fp== NULL)
    exit(EXIT_FAILURE);
while(fscanf(fp, "%20s", aLine) == 1)
{
    data = aLine;
    realloc(data, sizeof(data)+sizeof(aLine));
}

我想使用标准的C和POSIX功能,所以如果有列表意味着使用第三方库我不认为这是一个选项。

编辑:创建链表并不是一件容易的事,第二个最佳选择是什么?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该使用linked list。你必须在指针和结构的帮助下create a linked list