- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- AWS D1.1-2020钢结构焊接规范(中英文版).pdf
- 重大公共卫生项目健康危险因素健康问题调评估报告.doc
- 操作系统原理练习题2及答案.pdf VIP
- 湖北省医疗服务收费标准(综合医疗服务类).pdf
- 《中国共产党巡视工作条例》测试附答案.docx VIP
- 刺络拔罐技术钟代华PPT培训课件.pptx
- 全国学生资助管理信息系统-中职子系统操作手册-简易版_v1.30.pdf
- 3.6.2 中医特色康复医疗的服务标准及规范.docx VIP
- 碧桂园物管员工作岗位手机使用管理办法(V1.0).docx
- 2024-2025学年小学英语三年级上册(2024)接力版(三起)(2024)教学设计合集.docx
文档评论(0)