用于重复将字符串拆分为较小部分的数据结构

时间:2009-07-31 09:14:27

标签: c algorithm data-structures

我正在尝试编写一个重复匹配输入字符串的regexp模式的函数。该函数应采用模式1将其与输入字符串匹配,并将其拆分为匹配和非匹配段的部分。随后将模式2用于那些不匹配的段,直到使用所有输入模式。返回参数将是所有子字符串的数组。

简单示例:

input string "abcdefgh" against patterns "bc" and "f", would first split it into "a", "bc" and "defgh". Subsequently pattern "f" would be run against the "a" and "defgh" part and splitting the later into "de", "f", and "gh". Return argument {"a", "bc", "de", "f", "gh"}

(我还会保留一个带有匹配/非匹配信息的关联数组)

但我的问题是:哪种数据结构最适合执行此类任务?如何最好地解决这个问题,感觉就像是以递归方式工作的东西。

1 个答案:

答案 0 :(得分:2)

我们会想到一个链接列表,每当您将一个正则表达式与特定节点匹配时,您就会移除相关节点并在其位置插入3个链接节点。

特定的“节点”结构可以像包含3个字段的结构一样简单,字符串为char*,c为boolchar),表示是否匹配或不是指向下一个节点的指针。