新手初学C语言,需要按行比较、处理大文件,求教算法和数据结构!(分数只有10分了,求点击~)
大概是这样的,有两个文件 A,B(在附件里,比较小,实际比这个大,大概500MB),我需要选择 A 中的某一列,再选择 B 中的某一列,
一行行处理的时候拿 A 的所选列和 B 的所选列对比,
假如 A 的所选列和 B 的所选列是相互包含关系(无论哪个包含哪个),
那么分别在 A、B 的所在行做标记。。循环直到文件结束,
最后输出 A、B 中所做标记的行。
比如:
A文件 B文件
1 dcc x 6
2 login in 7
3 xmind out 8
4 zzz dcc 9
5 crazy rumia 10
选择 A 的第2列和 B 的第1列进行比较处理
输出结果就是
A‘
1 dcc
2 login
3 xmind
B’
x 6
in 7
dcc 9
注:大文件处理,越快越好!所以可以对文件按所选的列进行排序!
我一开始想到的是用二叉树节点保存每行以及这行所选的字段(列),
然而如果是递归的话,处理100多万行的文件估计不太行,用非递归的方式不太会。。
然后判断是否相互包含用了KMP算法,考虑到有些字段很长,但也不知道具体运行起来是不是会比C标准库的strstr快;
总之求大神帮看一下,选择怎样的算法和数据结构会比较快!
若有木有看明白的话留言一下叭~
[此贴子已经被作者于2016-5-19 13:36编辑过]