java线程池 读写10万行文件进行遍历时,占用物理内存溢出

java线程池 读写10万行文件进行遍历时,占用物理内存溢出,第1张

先优化下程序吧。你的每个8万行的list,读取完第一个文件,在读取第二个文件的时候释放吗?

你“将这个list跟3万行的list 遍历通过相同的id获取3万行里的手机号码。”这个效率太低了,将3万行数据的list改为HashMap,key是id,value是手机号。

你的程序中有几处错误:

1 动态分配数组不能这样写:BiTNode B[n+10]; 得用new去分配内存

2 判断数值相等得用双等号:if(A[i]b=0) 得写成 if(A[i]b==0)

3 数组的下标是从0开始的,不是从1开始

可能是这几处错误导致你的内存读写出错

我在你代码的基础上进行了改动和优化:

#include <iostream>

using namespace std;

typedef struct BiTNode

{

char data;

struct BiTNode lchild,rchild;

}BiTNode,BiTree;

BiTree Create(int n)

{

int i, left, right;

char ch;

BiTree T = new BiTNode[n];

for (i = 0; i < n; ++i)

{

cin >> ch >> left >> right;

T[i]data = ch;

if (left == 0)

T[i]lchild = NULL;

else

T[i]lchild = &T[left];

if (right == 0)

T[i]rchild = NULL;

else

T[i]rchild = &T[right];

}

return T;

};

void PreOrderTraverse (BiTree T)

{

if (T)

{

cout<<T->data<<" ";

PreOrderTraverse(T->lchild);

PreOrderTraverse(T->rchild);

}

}

void InOrderTraverse (BiTree T)

{

if (T)

{

InOrderTraverse(T->lchild);

cout<<T->data<<" ";

InOrderTraverse(T->rchild);

}

}

void PostOrderTraverse(BiTree T)

{

if (T)

{

PostOrderTraverse(T->lchild);

PostOrderTraverse(T->rchild);

cout<<T->data<<" ";

}

}

int main()

{

int i, N; //N个测试用例,需要储存N个二叉树

cin >> N;

BiTree T = new BiTree[N]; //指针数组,储存N个BiTree类型的指针

for (i = 0; i < N; i++)

{

int j, n; //每个测试用例输入n行数据

cin >> n;

T[i] = Create(n);

}

//输出

for (i = 0; i < N; i++)

{

cout<<"Case "<<i+1<<":"<<endl;

PreOrderTraverse(T[i]); 

cout<<endl;

InOrderTraverse(T[i]); 

cout<<endl;

PostOrderTraverse(T[i]);

cout<<endl;

delete [] T[i]; //释放Create中分配的内存

}

delete [] T;

return 0;

}

因为按照题目要求,是输入完T个测试序列后一并输出,而不是输入完一个输出一个,所以代码中还要先分配一个指针数组来存储这T个测试序列

代码编译通过,运行结果如下:

输入:

2

3

A 1 2

B 0 0

C 0 0

5

A 1 2

B 0 0

C 3 4

D 0 0

E 0 0

输出:

Case 1:

A B C

B A C

B C A

Case 2:

A B C D E

B A D C E

B D E C A

注意我的节点是从0开始标号的,所以根节点序号是0,它的两个孩子节点为1和2

望采纳,谢谢~

以上就是关于java线程池 读写10万行文件进行遍历时,占用物理内存溢出全部的内容,包括:java线程池 读写10万行文件进行遍历时,占用物理内存溢出、二叉树遍历 C++ 显示该内存不能为“read",不知道程序哪里出错了、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10101756.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存