C字符串作为链表?

时间:2012-02-23 19:44:56

标签: c string linked-list

在c-strings中,我们需要分配合理大小的内存。为了避免在字符串操作中重新分配,我们可以使用C#或Java中的Stringbuilder或 - 在C中 - 只为字符串分配更多内存。但如果我们事先不知道内存要求,那么它仍然是一个问题。我们有一些像链表一样的实现吗?我的意思是分配内存块列表和方法c_str(),它从节点

创建c-string
liststring a(4); // requested block size
a.append("hello ");
a.append("world");
// should create three nodes, 4 bytes allocated for each
// "hell" -> "o wo" -> "rld"
a.c_str(); // "hello world";

或者,如果我们想避免重新分配,我们会使用其他方法吗?请解释一下是不是坏主意。

3 个答案:

答案 0 :(得分:3)

有关将字符串保存为树的数据结构,请参阅Ropes上的文章。它与你的想法类似。

答案 1 :(得分:0)

没有标准的方法可以做到这一点。但是你可以实现自己的字符链表和转换为C字符串。

答案 2 :(得分:0)

我假设您的意思是 C ++ ,而不是 C

C ++ 中字符串操作的标准类是 std :: string

Java .NET 中的字符串类是不可变的。另一方面, std :: string 是可变的,因此它的行为与 StringBuilder 完全相同。