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

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构程序设计课设 数据结构程序设计课设 PAGE PAGE # 上海应用技术学院课程设计报告 课程名称 设计题目 数据结构课程设计(多道) 院系计算机科学与信息学院 专业 网络工程 班级 姓名 学号 指导教师 甘苹 日期 2014-7-7~2014-7-11 一.目的与要求 巩固和加深对常见数据结构的理解和掌握 掌握基于数据结构进行算法设计的基本方法 掌握用高级语言实现算法的基本技能 掌握书写程序设计说明文档的能力 提高运用数据结构知识及高级语言解决非数值实际问题的能力 二.课程设计内容说明 1.项目一:有序表合并 对设计任务内容的概述 要求输入有序表的数据,利用顺序表和链表结构分别完成两个有序表合并功能,并 输出合并后的信息。 需求分析或功能描述 分别设计顺序表和链表的合并功能,主界面供选择有序表的类型,选择后对两个有 序表进行合并。函数是静态数据读取,顺序表读取有序的数组数据直接合并输出,单链 表是对无序的集合排序后合并输出 概要设计或程序流程图 选择有序表类型 创建顺序表 创建链表 0、退出 \ 顺序表合并 链表合并 输出顺序表 输出链表 图1.1有序表合并流程图 程序的输入与输出描述 函数是静态数据读取,顺序表书有序表直接合并输出,单链表是对集合排序后合并 输出。 数据结构 #defi ne datatype int /*定义数据结构*/ 〃顺序存储类型 typedef struct { datatype data[MAXSIZE]; int len gth; } SqList ; /*定义数据结构*/ 〃单链表存储结构 typedef struct Lno de{ datatype data; struct Lnode *n ext; }Lin kList ; 程序模块及其接口描述 程序包括以下几个模块: 建立 排序 输出 合并 Main函数 顺序表 CreateList DispList1 squnion 单链表 CreateListR Sort DispList2 linkunion 详细设计或源代码说明 //listl:有序表合并 预处理与头文件 #i ncludestdio.h #i ncludevstri ng.h #i nclude stdlib.h #i nclude malloc.h //建立顺序表 void CreateList(SqList *L,datatype a[],i nt n) { int i; L=(SqList*)malloc(sizeof(SqList)); for(i=0;i n ;i++) L-data[i]=a[i]; L-le ngth=n; } //建立单链表 void CreateListR(Li nkList *L,datatype a[],i nt n) { Lin kList * s,*r;i nt i; L=(Li nkList*)malloc(sizeof(L in kList)); L- next=NULL; r=L; for(i=0;i n ;i++) {s=(Li nkList*)malloc(sizeof(L in kList)); s-data=a[i]; r-n ext=s; r=s; } r-n ext=NULL; } 〃单链表递增排序 void Sort(Li nkList *L) //单链表元素递增排序 { Lin kList *p,*pre,*q; //p指向 //p指向L的第2个数据节点 //构造只含一个数据结点的有序表 L- next- next=NULL; while (p!=NULL) q=p-next; 〃q保存*p结点后继结点的指针 pre=L; //从有序表开头进行比较,pre指向插入*p的前驱结点 while (pre-next!=NULL pre-next-datap-data) //在有序表中找插入 *p 的前驱结点*pre pre=pre-n ext; p-next=pre-next; //将*pre 插入至卩 *p 之后 pre-n ext=p; p=q; 〃扫描原链表余下的节点 } } //输出顺序表 void DispList1(SqList *L) // 输出线性表 { int i; //if (Listdatatype(L)) return; for (i=0;iL-le ngth;i++) prin tf(%d ,L-data[i]); prin tf(\n); } //输出单链表 void DispList2(Li nkList *L) 〃输出线性表 { Lin kList *p=L-n ext; while (p!=NULL) { prin tf(%d ,p-data); p

文档评论(0)

dianxin1241 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档