厦门理工学院数据结构课程设计 联系客服

发布时间 : 星期二 文章厦门理工学院数据结构课程设计更新完毕开始阅读79d0671fcf84b9d529ea7a18

2.2.1.2算法描述

#include #include

using namespace std; //三个头文件 queue string;

while(!string.empty()) //判断队列是否为空 string.push(x); //进队列 string.pop(); //出队列 string.front(); //得到队首的值 string.size(); //得到队列里元素个数

2.2.2调试过程及实验结果

问题:由于本题用队列来解题,每次出队列的数值都会消失,以致于在比较String1和String3时,照成String1和String3为空。

解决方法:另外增加了p和q两个字符串数组,先把String1和String3分别保存,然后再用数组进行比较,算法相对简单了。

图2-1为String1中不存在String3的情况。

图2-1

8

图2-2为String1 已存在String3的情况。

图2-2

2.3题目:二叉树运算1

求二叉树中指定两个结点共同的最近祖先。

2.3.1算法描述及实验步骤

2.3.1.1流程图

开始 结束 建立二叉排序树 输出p->data 输入x1,x2 p->data>x1,x2? N p=p->rchild Y Y p->datalchild N 9

2.3.1.2算法描述

int find(int x1, int x2) { }

实现寻找祖先的算法是通过比较结点的值与x1和x2的大小,比x1和x2都大就往左孩子结点接续寻找,比x1和x2都小就往右孩子结点继续寻找,当出现结点数据与x1和x2一大一小时,该结点的值为x1和x2的最近祖先。

BiTNode *p = root; while(1) { }

if (p->data>x1&&p->data>x2)

p=p->lchild;

else if(p->datadata

p=p->rchild;

else

return p->data;

2.3.2调试过程及实验结果

问题:无

执行结果:如图3-1

10

图3-1

三. 课程设计分析与总结

本次的课程设计非常赶时间,一周时间,还要课程设计,还要考试,在复习的同时又要上机,基本上天天到凌晨两点才能滚上床。

相对于上一次C语言的课程设计,题量少了,只有三题,但难度却增加了好几倍,一题就可以比得上C语言课程设计的十几题。在C语言的基础上设计算法,这不仅是敲代码能力的问题,更重要的是算法的构造,算法才是这次课程设计的难点,想到脑浆蹦出,一小题需要一天才能完成。

通过这次的上机综合练习,更加理解掌握了学习数据结构的目的,主要是掌握算法而不是敲代码,敲代码是学C语言的事。也明显发现了自己的弱处,二叉树掌握得相对薄弱,二叉树好理解,但是用代码却很多功能难以实现,所以课程设计完自己还续多找练习题,争取掌握二叉树的要领。还有因为课时非常赶,加上图这一章的难度也比较大,课程设计完之后还需要自己去看书,去敲代码。

11