欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计报告.docx

    • 资源ID:112548       资源大小:92.42KB        全文页数:18页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计报告.docx

    1、数据结构课程设计报告题目: 一、图子系统 二、查找子系统 1一、课程设计的目的 1二、课程设计的内容和要求 2三、题目一设计过程 2四、题目二设计过程 8五、设计总结 16六、参考文献 16题目: 一、图子系统 二、查找子系统一、课程设计的目的本学期我们对数据结构这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求学生掌握数据结构中的各方面知识,还要求学生具备一定的C语言基础和编程能力。(1)题目一的目的: 1、掌握土邻接表的存储方法 2、掌握图深度优先遍历的基本思想 3、掌握图广表度优先遍历的

    2、基本思想(2)题目二的目的: 1、理解查找的基本算法 2、掌握静态查找和动态查找的区别3、掌握顺序查找和二叉排序树的基本思想及其算法二、课程设计的内容和要求(1)题目一的内容和要求:1、对任意给定的图(顶点数和边数自定),建立它的邻接表并输出。 2、编写图的深度优先遍历程序。 3、利用队列的基本运算实现广度优先遍历。(2)题目二的内容和要求:1、 设计一个选择式菜单。查找子系统* 1.顺序查找 * 2.二叉排序树 * 3.返回 * *请选择菜单号(02) 2、分别实现顺序查找和二叉排序树。 3、二叉排序树必须实现构建、查找、插入的基本操作。三、题目一设计过程1、题目分析对图的每个顶点建立一个带

    3、头结点的线性链表,用于存储图中于顶点相邻接的边或弧的信息。头结点中存放该结点的信息。所有头结点用一个顺序表存放,对图进行深度优先遍历和广度优先遍历。2、算法描述void CreateUDN(Graph &G)任意建立一个图void DFS(Graph G,int k)从图的某一点k出发,进行深度优先遍历算法 void BFS(Graph G,int k)从图的某一点k出发,进行广度优先遍历算法3、源代码#include #include #define INFINITY 32767#define MAX_VEX 20 #define QUEUE_SIZE (MAX_VEX+1) using n

    4、amespace std;bool *visited; typedef struct char *vexs; int arcsMAX_VEXMAX_VEX; int vexnum,arcnum; Graph;class Queue public: void InitQueue() base=(int *)malloc(QUEUE_SIZE*sizeof(int); front=rear=0; void EnQueue(int e) baserear=e; rear=(rear+1)%QUEUE_SIZE; void DeQueue(int &e) e=basefront; front=(fro

    5、nt+1)%QUEUE_SIZE; public: int *base; int front; int rear;int Locate(Graph G,char c) for(int i=0;iG.vexnum;i+) if(G.vexsi=c) return i; return -1;void CreateUDN(Graph &G) int i,j,w,s1,s2; char a,b,temp; printf(输入顶点数和弧数:); scanf(%d%d,&G.vexnum,&G.arcnum); temp=getchar(); G.vexs=(char *)malloc(G.vexnum*

    6、sizeof(char); printf(输入%d个顶点.n,G.vexnum); for(i=0;iG.vexnum;i+) printf(输入顶点%d:,i); scanf(%c,&G.vexsi); temp=getchar(); for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsij=INFINITY; printf(输入%d条弧.n,G.arcnum); for(i=0;i=0 & kG.vexnum) for(int i=0;i=0 & i=0 & jG.vexnum) for(int k=j+1;kG.vexnum;k+) if(

    7、G.arcsik!=INFINITY) return k; return -1;void DFS(Graph G,int k) int i; if(k=-1) for(i=0;i=0;i=NextVex(G,k,i) if(!visitedi) DFS(G,i); void BFS(Graph G) int k; Queue Q; Q.InitQueue(); for(int i=0;i=0;w=NextVex(G,k,w) if(!visitedw) visitedw=true; printf(%c ,G.vexsw); Q.EnQueue(w); void main() int i; Gr

    8、aph G; CreateUDN(G); visited=(bool *)malloc(G.vexnum*sizeof(bool); printf(n广度优先遍历: ); for(i=0;iG.vexnum;i+) visitedi=false; DFS(G,-1); printf(n深度优先遍历: ); for(i=0;iG.vexnum;i+) visitedi=false; BFS(G); printf(n程序结束.n);4、运行结果通过输入图的顶点数、弧数可以得到图的深度优先遍历序列和广度优先遍历序列,如下图所示。四、题目二设计过程1、题目分析顺序查找是从线性表的一端开始,顺序扫描线性

    9、表,依次将扫描到的关键字于给定值x相比较,若相等则查找成功;若扫描结束后,仍未找到与关键字x相等的结点,则查找失败。对于二叉排序树,从根结点出发,当访问树中某个结点时,如果访问的关键字值等于给定的关键字值就访问成功。反之,如果关键字值大或小于已给定的关键字值则考虑查找左或右子树。2、算法描述void SequenceSearch()顺序查找BSTree CreateBST(void)建立二叉树void InsBST(BSTree *T,KeyType Key)在二叉树中插入数据void BSTSearch()查询二叉树数据3、源代码#include#include #include #defi

    10、ne LENGTH 20#define N 10void SequenceSearch()int aN,i,x,y;printf(ntt建立一个整数的顺序表(回车间隔,-1结束):n);for(i=0;i=0&ai!=x)i-;if(i=-1) printf(未能查找到数据%d.n); else printf(经过%d次查找,查找到数据%d.n,i+1,x); return ; typedef int KeyType;typedef struct node KeyType Key;struct node *lchild,*rchild;BSTNode; typedef BSTNode *BST

    11、ree; BSTree CreateBST(void); void SearchBST(BSTree T,KeyType Key); void InsBST(BSTree *Tptr,KeyType Key);void BSTSearch() BSTree T; char ch1,ch2; KeyType Key;printf(建立一棵二叉树:n);T=CreateBST();ch1=y;getchar();while(ch1=y|ch2=Y)printf(n);printf(ntt*);printf(ntt* 1-更新二叉排序树- *);printf(ntt* 2-查找结点- *);prin

    12、tf(ntt* 3-插入结点- *);printf(ntt* 0-返回- *);printf(ntt*ntt);scanf( %c,&ch2);getchar();switch(ch2) case1:T=CreateBST();break; case2:printf(ntt请输入要查找的数据:); scanf(%d,&Key); getchar(); SearchBST(T,Key);break; case3:printf(ntt请输入要插入的数据:);scanf(%d,&Key); getchar();InsBST(&T,Key);break; case0:ch2=n;return; def

    13、ault:printf(输入错误,请重新输入!n); BSTree CreateBST(void)BSTree T;KeyType Key;T=NULL;printf(ntt请输入一个关键字(输入0时结束):);scanf(%d,&Key);while(Key)InsBST(&T,Key);printf(ntt请输入一个关键字(输入0时结束):);scanf(%d,&Key);return T;void SearchBST(BSTree T,KeyType Key)BSTNode *p=T;while(p)if(p-Key=Key)printf(ntt已经找到你输入的数据.);return;p

    14、=(KeyKey)?p-lchild:p-rchild;printf(ntt没有找到你输入的数据.);void InsBST(BSTree *T,KeyType Key) BSTNode *f,*p;p=(*T);while(p)if(p-Key=Key) printf(ntt树中已有%d,不需插入.n,Key);return;f=p;p=(KeyKey)?p-lchild:p-rchild;p=new BSTNode;p-Key=Key;p-lchild=p-rchild=NULL;if(*T)=NULL)(*T)=p;elseif(KeyKey)f-lchild=p;elsef-rchil

    15、d=p;main() int choise; char ch=y;while(ch=y|ch=Y) printf(ntt*);printf(ntt* 1-顺序查找-*);printf(ntt* 2-二叉排序树-*);printf(ntt* 0-返回-*);printf(ntt*ntt); scanf(%d,&choise); switch(choise) case 1:SequenceSearch();break; case 2:BSTSearch();break; case 0:ch=n;break; default:printf(输入错误,请重新输入!n);4、运行结果 五、设计总结开始的时候总是很头疼,为了这次的课程设计,我泡了很多天的图书馆和机房,查阅了大量的资料书籍,并对数据结构课本知识点进行了系统的复习,巩固了基础,但是还是遇到了一些困难。直到最后快要答辩的时候彻底的吧程序搞懂了,往往都是这样当工作快接近尾声的时候才有一种焕然一新的感觉!六、参考文献1.杨路明.C语言程序设计教程.北京邮电大学出版社


    注意事项

    本文(数据结构课程设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开