学生实验报告
学院:软通学院
课程名称:数据结构与算法
专业班级:软件142 班
姓名:邹洁蒙
学号: 0143990
学生实验报告
(二)
一、实验综述
1、实验目的及要求
目的:1)掌握树与二叉树的基本概念;
2)掌握二叉树的顺序存储,二叉链表的先序遍历中序遍历和后序遍历算法;
3)掌握树的双亲表示法。
要求:1)编程:二叉树的顺序存储实现;
2)编程:二叉链表的先序遍历中序遍历和后序遍历实现;
3)编程:树的双亲表示法实现。
2、实验仪器、设备或软件
设备:PC
软件:VC6
二、实验过程(编程,调试,运行;请写上源码,要求要有注释)
1.编程:二叉树的顺序存储实现
代码:
BiTree::BiTree()//建立存储空间
{
data = new int[MAXSIZE];
count = 0;
}
void BiTree::AddNode(int e)//加结点
{
int temp = 0;
data[count] = e;
count++;//从编号0开始保存
}
运行截图:
2.编程:二叉链表的先序遍历中序遍历和后序遍历实现代码:
void InOrderTraverse(BiTree* Head)//中序遍历
{
if (Head)
{
InOrderTraverse(Head->LeftChild);
cout << Head->data<<" ";
InOrderTraverse(Head->RightChild);
}
}
void PreOrderTraverse(BiTree* Head)//先序遍历
{
if (Head)
{
cout << Head->data << " ";
PreOrderTraverse(Head->LeftChild);
PreOrderTraverse(Head->RightChild);
}
}
void PostOrderTraverse(BiTree* Head)//后序遍历
{
if (Head)
{
PostOrderTraverse(Head->LeftChild);
PostOrderTraverse(Head->RightChild);
cout << Head->data << " ";
}
}
运行截图:
3.编程:树的双亲表示法实现
代码:
void CreateRoot(BiTree* &Head, int e)//建立一个根节点,并且把头指针给Head
{
Head = new BiTree;
Head->data = e;
Head->LeftChild = NULL;
Head->RightChild = NULL;
}
void AddLeftChild(BiTree* &T, int e)//加一个左孩子
{
T->LeftChild = new BiTree;
T->LeftChild->data = e;
T->LeftChild->LeftChild = NULL;
T->LeftChild->RightChild = NULL;
}
void AddRightChild(BiTree* &T, int e)//加一个右孩子
{
T->RightChild = new BiTree;
T->RightChild->data = e;
T->RightChild->LeftChild = NULL;
T->RightChild->RightChild = NULL;
}
运行截图:
三、结论
1、实验总结(碰到了什么问题,如何解决?)
①预习时对二叉树性质3不理解,后来上课听老师讲,弄明白了。
②刚开始对二叉树的遍历不太理解,后来我仔细看了知识点和做了几道相关例题之后,弄懂了。
③在练习树与二叉树的编程基础题时,没思路,后来自己看书和问同学能够自己编写出来了。
2、分析讨论(个人体会和心得)
一分耕耘,一分收获。
不管在学习数据结构这门课程还是在做其他的事时都要认真对待,踏踏实实地去完成。
一件事情,你用了多少心,结果一出来便见分晓。
面对困难,比如说比较难懂的知识点,不要灰心,要坚持,在坚持不住时再坚持一下,你便做到了常人不能做到的事情,这才是成功者该有的品质。
我觉得自己要多努力,要见贤思齐,见不贤而内自省,才能让自己不再是井底之蛙,才能使自己的大学生活变得更充实。
好的生活习惯和学习习惯也是很重要的。
希望通过自己一次一次的反省和思考,能够学好专业知识和完善自己的品格。
四、指导教师评语及成绩:
成绩:指导教师签名:严军勇
批阅日期:2015年5月25日。