注册 登录
编程论坛 数据结构与算法

树:数据太大情况下数据结构存储

lyl930130 发布于 2015-02-11 08:52, 3784 次点击
现在我有一个几百兆的字典,想统计其数字的使用特征。
我是这样想的:
从一个口令中获取到其中的数字部分
用广度搜索的办法建一个树

程序代码:

程序代码:
struct num{int number;num *NEXT[10];};header[10]={0,NULL......};
for(int i=0;i<10;i++)
    header.NEXT=NULL;
......
source[10]//这里存的是一个口令中的数字部分,假设都是10个数字
......
num *temp=header;
for(int i=0;i<10;i++)
{
    if((temp+source[i])==NULL)
    {   
        temp.NEXT[source[i]]=malloc(sizeof(num *));
        给0给NULL;
    }
    temp=NEXT[source[i]];
    temp.number++;
}
......
        


我的大体思路是这样,大家帮忙看看有没有什么问题。

现在的主要问题是,如果按照这样处理数据,占用的空间太大了,内存不够,怎么办
10 回复
#2
azzbcc2015-02-11 09:12
什么机器?几百兆的内存都满足不了!
#3
lyl9301302015-02-11 14:30
回复 2楼 azzbcc
不是说要连续内存吗?连续的好像不行。而且如果以后统计的规模大的话,再加一个分支原来足够的内存就又不够了
#4
azzbcc2015-02-11 15:28
一个几百兆的字典,把数据结构好好设计一下,是可以存下来的,

你的数据结构我没看明白!
#5
lyl9301302015-02-11 15:46
回复 4楼 azzbcc
几百兆是第一个,之后还有很多很多个,目前加起来已经好几百个G了。
数据结构是这样的。比如根节点Header[10]存储0-9,若为11,23,46,43等,救在相应的Header[i]中继续malloc一个结构体,用来存ij。就这样依次往下:
第一层是0-9
第二层代表00-09,10-19,20-29......90-99
第三次代表000-009,010-019,......090-099,100-109,110-119......900-909,910-919...990-999
.....
#6
azzbcc2015-02-12 11:31
几百个G的东西我没操作过,建议用数据库优化吧!

目前看你的数据结构有很大的优化空间,比如以位为单位进行操作,或者重新设计。

信息不够!

话说初始就几百兆的字典怎么就变成几百G了?我没理解对么?
#7
lyl9301302015-02-12 23:42
回复 6楼 azzbcc
给了我一堆字典,第一个是600M的
#8
lyl9301302015-02-12 23:43
回复 6楼 azzbcc
数据库从来没有接触过,不知道看哪方面的资料,版主能稍微给个方向吗,或者具体推荐看什么书更好
#9
azzbcc2015-02-13 09:35
你这个难点就在大数据了。

分块处理吧,读入一块、处理一块、存储一块。
#10
lyl9301302015-02-25 10:38
回复 9楼 azzbcc
想了很久,不会啊。。。。。。
#11
努力加油学习2015-05-21 21:11
学弟我正在努力当中
1