发表时间:2022-03-25来源:网络
1 引言
在最近几天,一直再用c语言来进行数据结构的实训,实训的内容是用一个多叉树来实现家谱图.在之前大一学习数据结构和这学期的数据结构课上的时候,只是单纯地学了学它的实现原理和算法,没有注重具体的代码实现.这对于学习计算机这类课程来说,是一种错误的方式.因为计算机一类的课程,本来就是很注重实践的.没有自己亲自动脑思考过写过,你说你学过数据结构,完全不现实.而且让你自己也觉得不踏实.
2 过程
在实训的过程中,因为学习过c++和java,渐渐的抛弃之前用c语言那样完全按照流程式的方式来完成方法功能,想想确实是不明智的.在高耦合状态下的代码,要是修改起来,可能会将整个方法重写,浪费时间.如果按照面向对象一类语言的方式来考虑写法,你就完全不会想刚学完c语言的人写的代码一样,按照功能来划分,按需返回.
另一方面,在实训过程中,结构体的定义方面也有不少考虑的地方,对于这次的实训,我是将配偶节点和孩子节点放到了一块:
typedef struct TreeNode
{
int Num; // 孩子数目
char Name[20];// 名字
char Sex; // 性别 男M女F
struct TreeNode * NextNode[20]; //(孩子节点)
struct TreeNode * Parent; // 祖先节点
}TreeNode;
其实刚开始没有这么想,因为按照一般的思路,肯定是将配偶节点类似于父母节点一样单独拿出来.但是这样的话,会在结构体又多出一个指针.不烦如此,在表示当前节点和配偶节点的孩子节点的时候,两个节点你都要进行关联,这杨做会让你有种很错乱的感觉.如果像这样将配偶节点放到孩子节点里面,作为孩子节点集合的第一个.在表示于孩子节点之间的关系的时候,尤其是通过配偶节点来查询和显示孩子节点的时候,我们可以通过查询的配偶节点的配偶(这样说可能有点绕口,见下图).这样做之前要注意的是,在树中配偶节点的创建时,别忘了将配偶节点也反向绑定在当前节点上,不然遍历和查询的时候会出错.
举例:通过儿媳一节点查询孙子一节点就要通过儿子一节点来.

3 心得总结
其实,在用代码写一个具体的东西的时候,不能是像当初学习时的那种心态–只是实现当前功能明白原理就可以的,必须自己新身经历一遍,具体细节思考,亲自动手写写.可以先从常规思路出发,期间不断寻求更加快捷高效的方式来改进.还有不管用的是面向对象的语言还是面向过程的语言,在考虑问题的大方向上是一致的,要根据具体语言的特点来对应进行变换.将代码的功能尽量细分,按照功能来区分.类比于面向借口的思想.在完成整个系统的框架之后,按功能来一步步实现.以上就是在实训过程中的体会.
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务