写一份 数据结构课程设计报告。两个部分为:二叉树的遍历和查找(折半查找)的实现?
作者&投稿:禾邱 (若有异议请与网页底部的电邮联系)
不一定
看看平衡二叉树的定义:要么该二叉树是一颗空树,要么其左右子树的深度之差不超过1,并且左右子树也是平衡二叉树
折半查找不一定会形成这样的树
不一定,完全二叉树是序号和满二叉树一样。二叉判定树不一定序号相同,或者说极少序号相同!
数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与大家共勉。首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到Microsoft公司的.NET产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub,var看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称“.net是用于创建下一代应用程序的理想而又现实的开发工具”,而且主推c#语言,由于对c语言的一贯好感,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sqlserver2000,以前学asp的时候用的是access,那个时候只是照着人家做,理论是什么也不是很清楚。通过一个暑假的学习,基本搞清楚了理论方面的东西,具体怎么用也不是很清楚。但是这为这学期的课程设计打下了铺垫。来到学校后,随着这学期的数据库课程大赛开始了,我有一个看法就是我自己应该具备的能力不是我会多少,而是我应该具备快速学会东西的能力。遇到什么就学什么。我们有时候很容易被一些专业名词说吓着,包括什么建模,软件工程,数据分析,数据挖掘等等。我身边就有很多同学被这些纸老虎所唬住,而没有勇气去接触他们,总是说这个太难了之类的退堂鼓的话,他们低估了自己的潜力同时也压抑住了他们自己的好奇心。其实都是纸老虎,又不是什么国家科研难题,只是去用一些工具,发明工具是很难,但是用一个工具就容易多了,justdoit!我记得我做这个数据库之前,我们老师说要做好前期分析,我就在网上搜索用什么分析工具好。最后我选择了roseUML建模工具。在此之前,我脑袋里面没有软件建模的思想,什么UML建模对我而言就是一张空白的纸。但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。以及后来的数据库分析的时候用到的powerdesigner也是一样。开发的时候我想过用什么架构,c/s模式?模式有很多,怎么选择?我就上网搜索现在最流行的架构是什么。结果搜到了MVC架构,就是你啦。我决定用这个架构,不会,没关系,咱学。Justdoit!前期工作准备好后,那么我就得把我暑假学的.net加以实践。这个时候我更加深入的了解了利用ado.Net操纵数据库的知识。并且对数据库里面的存储过程有了比较深入的了解。经过大概2个多星期的奋斗,我完成了我的数据库课程设计--基于.net数据集的图书馆管理系统。并最后非常荣幸的获得了大赛的一等奖以及以及新技术应用奖。与其临渊羡鱼,不如退而结网。这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.NET的核心技术就是XML[至少微软是这么宣传的],我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,justdoit!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊!我很庆幸我参加了这次数据库大赛,让我确实打开了眼界。二叉树的遍历
#include <iostream>
#include <cstring>
#define maxLength 32
using namespace std;
typedef struct binaryNode
{
char data;
struct binaryNode *lchild, *rchild;
} binaryNode;
void createByPreAndIn(char preArray[], char inArray[], binaryNode *&parent, int preStart, int preEnd, int inStart, int inEnd);
void createByLastAndIn(char lastArray[], char inArray[], binaryNode *&parent, int lastEnd, int lastStart, int inStart, int inEnd);
void preOrderVisit(binaryNode *root);
void inOrderVisit(binaryNode *root);
void lastOrderVisit(binaryNode *root);
void rugged(binaryNode *root,int);
void brackets(binaryNode *root);
void level(binaryNode *root);
void display(binaryNode *root);
int main(void)
{
char preArray[maxLength], inArray[maxLength], lastArray[maxLength];
binaryNode *root;
cout<<"构造二叉树,输入构造方式。(1代表前中序,其它数字代表后中序): ";
int way;
cin>>way;
if(way==1)
{
cout << "输入前序遍历序列: ";
cin >> preArray;
cout << "输入中序遍历序列: ";
cin >> inArray;
createByPreAndIn(preArray, inArray, root, 0, strlen(preArray) - 1, 0, strlen(inArray) - 1);
}
else if(way==2)
{
cout << "输入后序遍历序列: ";
cin >> lastArray;
cout << "输入中序遍历序列: ";
cin >> inArray;
createByLastAndIn(lastArray, inArray, root, 0, strlen(lastArray) - 1, 0, strlen(inArray) - 1);
}//initialization
cout<<"构造完成,下列是该二叉树的表示方式"<<endl;
display(root);
cout<<"按enter键继续...";
cin.get(); cin.get();
return 0;
}
void createByPreAndIn(char preArray[], char inArray[],binaryNode *&parent, int preStart, int preEnd, int inStart, int inEnd)
{
if (preStart <= preEnd)
{
parent = new binaryNode;
parent->data = preArray[preStart], parent->lchild = parent->rchild = NULL;
int middle = inStart;
while (inArray[middle] != preArray[preStart] && middle <= inEnd)
middle++;
createByPreAndIn(preArray, inArray, parent->lchild, preStart + 1, preStart+middle-inStart, inStart, middle - 1);
createByPreAndIn(preArray, inArray, parent->rchild, preStart + middle - inStart + 1, preEnd, middle + 1, inEnd);
}
}
void createByLastAndIn(char lastArray[], char inArray[], binaryNode *&parent, int lastStart, int lastEnd, int inStart, int inEnd)
{
if (lastStart <= lastEnd)
{
parent = new binaryNode;
parent->data = lastArray[lastEnd], parent->lchild = parent->rchild = NULL;
int middle = inStart;
while (inArray[middle] != lastArray[lastEnd] && middle <= inEnd)
middle++;
createByLastAndIn(lastArray, inArray, parent->lchild, lastEnd - inEnd + inStart, lastEnd - inEnd + middle - 1, inStart, middle - 1);
createByLastAndIn(lastArray, inArray, parent->rchild, lastEnd - inEnd + middle, lastEnd - 1, middle + 1, inEnd);
}
}
void preOrderVisit(binaryNode *root)
{
if (root)
{
std::cout << root->data;
preOrderVisit(root->lchild);
preOrderVisit(root->rchild);
}
}
void inOrderVisit(binaryNode *root)
{
if (root)
{
inOrderVisit(root->lchild);
std::cout << root->data;
inOrderVisit(root->rchild);
}
}
void lastOrderVisit(binaryNode *root)
{
if (root)
{
lastOrderVisit(root->lchild);
lastOrderVisit(root->rchild);
cout << root->data;
}
}
void rugged(binaryNode *root, int indent)
{
if (root)
{
for (int j = 0; j < indent; j++)
std::cout << "-";
indent++;
std::cout << root->data;
std::cout << std::endl;
rugged(root->lchild, indent + 1);
rugged(root->rchild, indent + 1);
}
}
void level(binaryNode *root)
{
int front = -1, rear = 0;
binaryNode *buff[maxLength],*visit;
buff[rear] = root;
while (front != rear)
{
front = (front + 1) % maxLength;
visit = buff[front];
if (visit->lchild)
{
rear = (rear + 1) % maxLength;
buff[rear] = visit->lchild;
}
if (visit->rchild)
{
rear = (rear + 1) % maxLength;
buff[rear] = visit->rchild;
}
cout << visit->data;
}
}
void brackets(binaryNode *root)
{
if (root)
{
std::cout << root->data;
if (root->lchild || root->rchild)
std::cout << '(';
brackets(root->lchild);
if(root->lchild && root->rchild)
std::cout << ',';
brackets(root->rchild);
if (root->lchild || root->rchild)
std::cout << ')';
}
}
void display(binaryNode *root)
{
cout << "前序遍历: ";
preOrderVisit(root);
cout << endl;
cout << "中序遍历: ";
inOrderVisit(root);
cout << endl;
cout << "后序遍历: ";
lastOrderVisit(root);
cout << endl;
cout << "层次遍历: " << endl;
level(root);
cout << endl;
cout << "凹入表示法: " << endl;
rugged(root, 0);
cout << endl;
cout << "括号表示法: " << endl;
brackets(root);
cout << endl;
}
写一份 数据结构课程设计报
比较分析
how much?
管苑西咪: 我正好在做课设,我把我的总结给你.数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且也已经成为其他理工专业的热门选修课.随着高级语言的发展,数据结构在计算机的研究和应用中已展现出强大的生...
陆川县18644975307: 数据结构课程设计报告 - ?
管苑西咪: 1、一元稀疏多项式相加详细设计4.1 程序头的设计: #include<stdio.h> #include<malloc.h> typedef struct pnode {int coef;/*系数 */ int exp;/*指数 */ struct pnode *next;/*下一个指针*/ }pnode;4.2 用头插法生成一个多项式,系数和...
陆川县18644975307: 数据结构课程设计 - ?
管苑西咪: 这个自己看下 不过是用C实现的#include <stdio.h> #include <string.h>#include <stdlib.h>#define MAXSIZE 1000 typedef char datatype; typedef struct { datatype a[MAXSIZE]; int size; }e_list; e_list s; e_list t; void ptint_slt(e_list slt); /*输出文本*/ void ...
陆川县18644975307: 很急!!!谁帮忙写份数据结构课程设计说说用哪些知识点写也可以?
管苑西咪: 这很简单啊..需要一个结构体,简单排序就可以了结果我帮你定义,其他就很好做了struct chanpin{ int chanpin[5];}struct list{ char *name; int number; //销售员的代号 chanpin chanpin;//每一种当天销售的数量 struct list* next;}然后你用一个链表,每天将纸条加入链表就可以了这样就可以了然后下面的结果 你直接遍历链表 计算排序就可以
陆川县18644975307: c语言课程设计报告 有一项 数据结构 我该怎么写 一个程序的数据结构是? - ?
管苑西咪: 是需要用数据结构,但是看你是要做什么设计了!比如链表的话,你就需要定义一个抽象数据类型链表(LIST),然后用结构体表示这个数据类型,里面有它的各种操作!如果要你做数据结构的课程设计,一般都会给你设计任务的,按照任务设计抽象数据类型,有什么不懂的可以再交流交流
陆川县18644975307: 怎么写数据结构报告啊,下面是我所要的要求 - ?
管苑西咪: 晕/////真麻烦..... 数据结构实习报告规范 实习报告的开头应给出题目、班级、姓名、学号和完成日期,并包括以下七个内容: 1、需求分析 以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定: (1)输入的形式和输...
陆川县18644975307: 八皇后问题的数据结构课程设计报告 - ?
管苑西咪: #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <dos.h> char n[3]={\'0\',\'0\'};/*用于记录第几组解*/ int a[8],b[15],c[24],i; int h[8]={127,177,227,277,327,377,427,477};/*每个皇后的行坐标*/ int l[8]={252,217,182,147,112,77,42,...
陆川县18644975307: 数据结构设计?
管苑西咪: 设计说明 1、 算法设计的思想 建立图类,建立相关成员函数.最后在主函数中实现.具体成员函数的实现请参看源程序. 2、 主要的数据结构设计说明 图邻接矩阵、邻接表的建立.图的深度优先遍历、拓扑排序、顶点之间的最短路径. 3、 程序的主要模板template <class Type> class Graph 4、 程序的主要函数 Graph、link()、DFTraverse()、TopologicalOrder()、 TopologicalOrder()、GetVertexPos()、ShortestPath
陆川县18644975307: 数据结构实验报告带括号的算术表达式求值 - ?
管苑西咪: 算术表达式求值演示 一、概述 数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解.同时,在程序设计方法以及上机操作等基本技能和科学作风方...
陆川县18644975307: 求助各位高手《数据结构 课程设计》报告?
管苑西咪: # define max 50 > struct a > { > int weight; > int parent,lchild,rchild; > }; > struct b > { > char cd[max]; > int start; > }; > main() > { > struct a ht[2*max]; > struct b hcd[max],d; > int i,j,k,n,c,s1,s2,m1,m2,f; > printf("shu ru n: "); > scanf("%d",&n); > for(i=1...