【发布时间】:2012-11-29 02:46:34
【问题描述】:
在 C 中,我需要存储一个可能相对较大(数千个项目)的短字符串 (char*) 列表。
字符串可以删除或插入但不能修改,顺序不重要。
我不知道这样做更有效的数据结构是什么。
我可以使用结构:
struct node_s {
char *str;
node_s *next;
}
或一个 char * 数组:
char **strings;
我不需要直接访问字符串,我只需要它们存在,因为旁边的另一个数据结构(radix trie)维护着字符串某些部分的指针。
【问题讨论】:
-
你想要随机访问还是顺序访问?
-
你应该支持频繁查找吗?因为如果这样做,您可能需要考虑使用某种字典(平衡树或哈希图),而不是线性数据结构。
-
more efficient是什么意思?在插入、删除、移位、搜索方面效率高吗? -
事实上,我不需要直接访问字符串,我只需要它们存在,因为另一个结构(radix trie)在字符串的某些部分上有指针。我刚刚修改了我的帖子以使其准确。
-
如果字符串应该是不可变的,你可能想在你的结构中声明 *str 一个常量。
标签: c arrays string linked-list