( 实现二叉树生成问题 夹带 内存泄露问题)这些代码怎么了析构函数调用了吗 到最后 msdos竟然不能打开了

clin003 2004-11-16 09:42:17
( 实现二叉树生成问题 夹带 内存泄露问题)这些代码怎么了析构函数调用了吗 到最后 msdos竟然不能打开了

目的: 用类作为二叉树的结点 生成一个 有序(无论前序还是后序)二叉树 二叉树有类成员函数可以控制
……

下边是 一段糟糕的代码 ;
怎样优化它……

#include <iostream>

using namespace std;
int cunt=0;// 跟踪 创建的实例

class tree
{
public:
tree()
{
cout << " \tcreat tree : " << (++cunt) << endl;
data='0';

childl=NULL;
childr=NULL;
}
tree(tree &tr)
{
cout << " \t\tcreat copy tree : "<<(++cunt)<<endl;
tree CopyTr;
CopyTr.data = tr.data;
CopyTr.childl=tr.childl;
CopyTr.childr=tr.childr;
}
~tree()
{
cout << " \t del tree : " << (--cunt) <<endl;
delete childl;
delete childr;
}
void CreatTree( tree *p)
{
char ch;
cout << "input data : " ;
cin >> ch;
if(!cin.good())
{
cout << " \tchar error ! ";
exit(0);
}
if (!(ch == 'q'))
{
childl = new tree;
childr = new tree;
if((childl==NULL)|(childr==NULL))
{
cout<< " \t\t\t mem error ! ";
}
p->data=ch;
CreatTree (p->childl);
CreatTree (p->childr);
}
else
p=NULL;
}
void DisplayData( const tree *a)
{
cout << " the node data is : " << a->data;
}


private:

char data;
tree *childl;
tree *childr;
};

int main(int argc, char* argv[])
{
tree * a;
// a = new tree; 若加上会出现死循环!
a->CreatTree(a);
a->DisplayData(a);
return 0;
}
...全文
173 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
clin003 2004-11-21
  • 打赏
  • 举报
回复
上边的这个 结束 (除非第一次输入q)
clin003 2004-11-21
  • 打赏
  • 举报
回复
改了一下 还是不行
晕 这样行不通吗


#include <iostream>

using namespace std;
int cunt=0;// 跟踪 创建的实例

class tree
{
public:
tree()
{
cout << " \tcreat tree : " << (++cunt) << endl;
data='e';

childl=NULL;
childr=NULL;
}
tree(tree &tr)
{
cout << " \t\tcreat copy tree : "<<(++cunt)<<endl;

data = tr.data;
childl=tr.childl;
childr=tr.childr;
}
~tree()
{
cout << " \t del tree : " << (--cunt) <<endl;

}
tree * CreatTree( )
{
char ch;
tree *curr;
cout<<" input data : "<<endl;
ch = cin.get();
/*if(!cin.good())
{
cerr<<" type error …… ";
fflush(stdin);
exit(0);
}*/
if(ch=='q')
{
curr = NULL;
}
else
{
curr = new tree ;//(sizeof(tree));
(*curr).data = ch;
(*curr).childr = CreatTree();
cout<<endl;
(*curr).childl = CreatTree();
}
return curr;
}
void DisplayData( const tree *a)
{

while (!(a=NULL))
{

cout << " the node data is : " << (*a).data;

DisplayData((*a).childl);
DisplayData((*a).childr);

}
}


private:

char data;
tree *childl;
tree *childr;
};

int main(int argc, char* argv[])
{
//tree * a;
tree *a = new tree; //若加上会出现死循环!
a = a->CreatTree();
a->DisplayData(a);
return 0;
}
clin003 2004-11-18
  • 打赏
  • 举报
回复
汗! 不回帖子 ……
都沉水了 ING

先边是改的代码 有问题……
还是生成问题
晕 还是自己找吧
找去了……

#include <iostream>

using namespace std;
int cunt=0;// 跟踪 创建的实例

class tree
{
public:
tree()
{
cout << " \tcreat tree : " << (++cunt) << endl;
data='e';

childl=NULL;
childr=NULL;
}
tree(tree &tr)
{
cout << " \t\tcreat copy tree : "<<(++cunt)<<endl;

data = tr.data;
childl=tr.childl;
childr=tr.childr;
}
~tree()
{
cout << " \t del tree : " << (--cunt) <<endl;
/* delete childl;
delete childr;
*/
}
void CreatTree( tree *p)
{
char ch;
cout<<" input data : ";
cin>> ch;
if(!cin.good())
{
cerr<<" type error …… ";
fflush(stdin);
exit(0);
}
if(p=NULL)
{
tree *pt= new tree;//( sizeof(tree) );
p=pt;
(*p).data = ch ;
CreatTree((*p).childl);
CreatTree((*p).childr);
}


}
void DisplayData( const tree *a)
{

while (!(a=NULL))
{

cout << " the node data is : " << (*a).data;

DisplayData((*a).childl);
DisplayData((*a).childr);

}
}


private:

char data;
tree *childl;
tree *childr;
};

int main(int argc, char* argv[])
{
//tree * a;
tree *a = new tree; //若加上会出现死循环!
a->CreatTree(a);
a->DisplayData(a);
return 0;
}

xuzheng318 2004-11-17
  • 打赏
  • 举报
回复
感觉 new 和delete 也怪怪的
Dong 2004-11-16
  • 打赏
  • 举报
回复
程序没有“若加上会出现死循环!”这个错误,“循环”输入是二叉树输入一个现象,因为一个枝就有两个子树,假如你输入一个字符,就要输入两次退出(q)才可以结束子树的输入。结束子树的次数比输入的字符还要多,不过有一点却是真的错误了

你的拷贝构造函数要改成这样的。
tree(tree &tr)
{
cout << " \t\tcreat copy tree : "<<(++cunt)<<endl;
data = tr.data;
childl=tr.childl;
childr=tr.childr;
}
《5G通信中GFDM技术的MATLAB模拟研究》 5G技术作为当前通信领域的核心技术,以其高速率、低时延和大连接能力,为智能交通、远程医疗等新兴应用场景提供了关键支撑。其中,GFDM(广义滤波离散多音调)作为一种多载波调制方案,因其在资源分配上的灵活性和频谱利用率较高,受到广泛关注。该文件“Generalized-GFDM-Framework--master.rar”提供了基于MATLAB的GFDM算法实现,适合作为初学者了解5G通信技术的参考资料。 GFDM属于非正交多载波技术,其核心在于将时频资源组合为复数块,并通过滤波操作优化信号质量,从而降低干扰。相较于传统OFDM,GFDM在帧结构上更具适应性,能够更有效地应对信道变化,并在能效和频谱利用方面表现更优。MATLAB作为一款功能强大的计算与仿真平台,广泛应用于通信系统的开发与测试。 在MATLAB中实现GFDM系统,需首先掌握其基本结构,包括信号成、滤波器配置以及调制方式的设定等。该框架可能包含以下几个主要部分: 1. **信号成**:通过子载波数据经过滤波处理后合成完整符号,涉及傅里叶变换、滤波器应用及子载波映射等操作。 2. **滤波器配置**:选择满足系统需求的滤波器,如低通、带通等,需考虑其阻带抑制、过渡带宽度等参数。MATLAB提供了多种滤波器设计方法,如fir1、equiripple等。 3. **调制映射**:根据不同的调制方式(如QAM、QPSK),成对应的星座图,并将符号映射至各子载波。 4. **信道建模**:模拟无线信道中的多径、衰落等现象,以评估系统在真实环境下的表现。 5. **接收处理**:包括滤波、FFT逆变换、信道估计与均衡等步骤,用于恢复发送的数据。 6. **性能分析**:通过误码率、频谱利用率等指标,评估系统在不同信道条件下的表现。 通过学习该MATLAB代码库,不仅能够理解GFDM的理论基础,还能通过实际编程加深对其工作机制的掌握,提高算法实现能力。其中提到的“movewu2”和“wingggr”可能为特定函数或模块,具体功能需结合代码内容进一步分析。该资源为通信技术研究者和学习者提供了实践平台,有助于深入理解5G通信系统中的GFDM技术,为后续研究与开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
### 半导体行业标准合集:SEMI标准解析 #### 一、概述 SEMI(Semiconductor Equipment and Materials International)作为全球领先的行业协会之一,在半导体制造及相关领域内制定了广泛的标准和指南,旨在确保产品的互操作性、兼容性和安全性。本文将深入探讨SEMI E1-0697这一标准中的重要内容——《3英寸、100毫米、125毫米及150毫米塑料和金属晶圆载体规格》。 #### 二、SEMI E1-0697标准详解 ##### 1. 标准范围与目标 SEMI E1-0697标准主要定义了用于加工和处理3英寸(约76.2毫米)、100毫米、125毫米及150毫米直径晶圆的塑料和金属载体的尺寸要求。该标准适用于各种类型的晶圆载体,并且分为两种分类: - **通用用途**:涵盖了3英寸、100毫米、125毫米及150毫米晶圆的尺寸。 - **自动运输用途**:特别针对自动化晶圆加工设备对接口的要求,适用于125毫米和150毫米晶圆的尺寸。 ##### 2. 尺寸要求 为了符合SEMI E1-0697标准,晶圆载体必须在规定的尺寸范围内制造,并且在按照制造商推荐的方法使用时保持尺寸稳定。这意味着载体的设计和制造必须满足严格的公差要求,以确保与自动化设备的良好配合以及晶圆的安全处理。 ##### 3. 安全考虑 虽然该标准未明确涉及安全问题,但在实际应用中,晶圆载体的安全性至关重要。制造商应遵循相关的安全指南和规定,确保产品在整个命周期内的安全性。 #### 三、SEMI标准体系 SEMI标准不仅限于晶圆载体的尺寸要求,还覆盖了广泛的领域,如: - **设备自动化硬件**:规范了半导体设备中的机械部件和系统的标准化接口,以实现设备之间的无缝集成。 - **设备自动化软件**:定义了软件接口和通信协议,支持设备间的数据交换和控制。 - **设施**:包括了对半导体制造设施的设计、建设和维护的要求。 - **平板显示**:针对平板显示器产过程中的材料和工艺制定标准。 - **气体**:涉及到半导体制造过程中使用的特殊气体的质量和安全要求。 - **材料**:涵盖了用于制造半导体器件的各种材料的标准。 - **光刻**:定义了光刻技术中的关键参数和技术要求。 - **封装**:针对半导体器件的封装技术提供指导。 - **过程化学品**:制定了用于半导体制造过程中的化学品的标准。 - **安全指南**:提供了关于半导体产和使用过程中的安全措施的建议。 - **硅材料与过程控制**:针对硅基半导体材料的特性和制造过程制定标准。 - **可追溯性**:确保半导体产品从原材料到成品的整个命周期中的可追溯性。 #### 四、结论 SEMI标准对于半导体行业的发展具有重要的意义,它不仅提高了设备和材料的兼容性与互操作性,还促进了行业的整体技术水平提升。通过实施这些标准,可以有效减少制造成本,提高产效率,同时保证产品的质量和安全性。对于从事半导体制造的企业和个人来说,深入了解并遵循SEMI标准是至关重要的

65,198

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧