《实现两个链表的合并医学心理学烧伤科_高等教育-大学课件.pdf》由会员分享,可在线阅读,更多相关《实现两个链表的合并医学心理学烧伤科_高等教育-大学课件.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 课程设计报告 课程设计题目:实现两个链表的合并 学生姓名 专业 班级 指导教师 2012 年 06 月 21 日 课程设计目的:课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理 论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生 适应实际,实践编程的能力。课程设计题目:实现两个链表的合并 要求:1)输入 2 个单链表 2)输出 2 个单链表合并后形成的结果 三、模块划分:(1)数据模块 参考使用课本上的具有头结点的链表抽象数据类型 linklist,该抽象数据类型中包 含一个 elemtype 类型的数据和一个指针,在开始用时,elemtype 定义为整
2、型变量,指针用来指向下一个元素。对应的使用链表抽象数据类型 linklist 基本操作的函 数有:初始化操作函数 void ini(linklist*s)。(2)创建链表模块 void create(linklist*s)其功能是创建链表录入数据。(3)输出数据模块 void display(linklist*s)其功能为是输出 s 链表中的各项元素,从而验证操作是否成功(4)排序模块 void sort(linklist*s)此函数功能是 s 链表使用冒泡法对链表进行排序 5)合并链表模块提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问
3、题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?void add(linklist*s1,linklist*s2)其功能是按照题目要求实现两个链表的合并,将 s2 链表插入到 s1链表中(6)主函
4、数模块 void main(),函数中调用了各个模块的函数,从而实现了题目合并排序的要 求 四、流程图:提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?
5、动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?结束 五、算法设计分析 这个两个链表的交叉合并算法主要运用到的是链表的基本操作,定义 节点,将链表的创建、链表的插入、链表内容升序排列,通过主函数调用。这样就大大精简了主函数的操作。但主函数中很大篇幅用到了 if、else 语句,用以指定链表指定结点,这样就使得本来很精简变得繁琐,降低了程序的质 量。所以其有优点和缺点,但需要不断的改进,不断优化该程序。六、数据结构:(1)数据类型 DataType 定义如下:typedef int elemtype;(2)带头结点链表抽象数据类型的结点结构定义如下:typedef struct no
6、de elemtype data;struct node*next;linklist;七、源程序:提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解
7、决?求?计?动?个既?动个既在?插本?手?将?个既元?#define null 0 typedef int elemtype;typedef struct node elemtype data;struct node*next;linklist;void ini(linklist*s)s-next=null;void create(linklist*s)linklist*p,*q=s;elemtype e;printf(please input the data;n);scanf(%d,&e);while(e!=-1)p=(linklist*)malloc(sizeof(linklist);p
8、-data=e;q-next=p;q=q-next;scanf(%d,&e);q-next=null;void display(linklist*s)linklist*p=s-next;if(s-next=null)printf(the linklist is empty!n);else printf(output the data:n);while(p!=null)提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量
9、时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?printf(%5d,p-data);p=p-next;printf(n);void sort(linklist*s)linklist*p,*q;elemtype t;p=s-next;while(p!=null)q=p-next;while(q!=null)if(p-da
10、taq-data)t=p-data;p-data=q-data;q-data=t;q=q-next;p=p-next;void add(linklist*s1,linklist*s2)linklist*p1=s1-next,*p2=s1,*q1=s2-next,*q2=s2;if(s1=null)s1=s2;while(p1!=null&q1!=null)if(p1-datadata)p1=p1-next;p2=p2-next else 提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单
11、出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?q2-next=q1-next;q1-next=p2-next;p2-next=q1;p2=p2-next;q1=q2-next;if(q1!=null)p2-next=q1;void main()li
12、nklist*s1,*s2;s1=(linklist*)malloc(sizeof(linklist);ini(s1);create(s1);display(s1);sort(s1);display(s1);s2=(linklist*)malloc(sizeof(linklist);ini(s2);提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创
13、用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?create(s2);display(s2);sort(s2);display(s2);add(s1,s2);display(s1);八、实验运行结果显示:提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输
14、生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?九、实验收获和体会:十、参考文献 1 赵国玲.C语言与数据结构 M.北京:电子工业出版社,1999.11:120-146 2 严蔚敏,吴伟民.数据结构(C语言版)M.北京:清华大学出版社,2006.10:44-52 3 严蔚敏.数据
15、结构 C 语言 M.北京:清华大学出版社,2006.10:110-135 4 谭浩强.C 程序设计指导 M.北京:清华大学出版社,2005 提供了一个既动手又脑动独立实动独立实又脑践的机会手将课本上理论知识将和本际有结合起来锻炼学生分析解决学问题学生能力高适应编脑生程设析计目现将两链表并要求输入单出出个既后形数据将指针在目现输生开将始既生开用时定程生开将义为题整型变量时生脑义为生开将向下时元素对求使抽时象单类基操作编时函初化使抽义为单创用单解决建模高时函初化使抽时象块单其功生编时函初化使抽义为块单其功生是块单其功生录中向各动项从而用验学生是插到主调排序四流是图五主算五序法束单单这求输适应交叉运节将点象炼?动?解决?求项?从目现?动?解决?求?计?动?个既?动个既在?插本?手?将?个既元?