实现两个链表地合并大数据结构课程设计c语言版.docx

上传人:b****2 文档编号:17758396 上传时间:2023-08-03 格式:DOCX 页数:9 大小:59.20KB
下载 相关 举报
实现两个链表地合并大数据结构课程设计c语言版.docx_第1页
第1页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第2页
第2页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第3页
第3页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第4页
第4页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第5页
第5页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第6页
第6页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第7页
第7页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第8页
第8页 / 共9页
实现两个链表地合并大数据结构课程设计c语言版.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实现两个链表地合并大数据结构课程设计c语言版.docx

《实现两个链表地合并大数据结构课程设计c语言版.docx》由会员分享,可在线阅读,更多相关《实现两个链表地合并大数据结构课程设计c语言版.docx(9页珍藏版)》请在冰点文库上搜索。

实现两个链表地合并大数据结构课程设计c语言版.docx

实现两个链表地合并大数据结构课程设计c语言版

 

课程设计报告

 

课程设计题目:

实现两个链表的合并

 

学生姓名

专业

班级

指导教师

2012年06月21日

一、课程设计目的:

课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力。

 

二、课程设计题目:

实现两个链表的合并

要求:

1)输入2个单链表

2)输出2个单链表合并后形成的结果。

 

三、模块划分:

(1)数据模块

参考使用课本上的具有头结点的链表抽象数据类型linklist,该抽象数据类型中包含一个elemtype类型的数据和一个指针,在开始用时,elemtype定义为整型变量,指针用来指向下一个元素。

对应的使用链表抽象数据类型linklist基本操作的函数有:

初始化操作函数voidini(linklist*s)。

(2)创建链表模块

voidcreate(linklist*s)

其功能是创建链表录入数据。

(3)输出数据模块

voiddisplay(linklist*s)

其功能为是输出s链表中的各项元素,从而验证操作是否成功

(4)排序模块

voidsort(linklist*s)

此函数功能是s链表使用冒泡法对链表进行排序

(5)合并链表模块

voidadd(linklist*s1,linklist*s2)

其功能是按照题目要求实现两个链表的合并,将s2链表插入到s1链表中。

(6)主函数模块

voidmain(),函数中调用了各个模块的函数,从而实现了题目合并排序的要求

 

四、流程图:

 

 

S1为nulls1!

=null

 

五、算法设计分析

这个两个链表的交叉合并算法主要运用到的是链表的基本操作,定义节点,将链表的创建、链表的插入、链表内容升序排列,通过主函数调用。

这样就大大精简了主函数的操作。

但主函数中很大篇幅用到了if、else语句,用以指定链表指定结点,这样就使得本来很精简变得繁琐,降低了程序的质量。

所以其有优点和缺点,但需要不断的改进,不断优化该程序。

 

六、数据结构:

(1)数据类型DataType定义如下:

typedefintelemtype;

(2)带头结点链表抽象数据类型的结点结构定义如下:

typedefstructnode

{

elemtypedata;

structnode*next;

}linklist;

 

七、源程序:

#definenull0

typedefintelemtype;

typedefstructnode

{

elemtypedata;

structnode*next;

}linklist;

voidini(linklist*s)

{

s->next=null;

}

voidcreate(linklist*s)

{

linklist*p,*q=s;

elemtypee;

printf("pleaseinputthedata;\n");

scanf("%d",&e);

while(e!

=-1)

{

p=(linklist*)malloc(sizeof(linklist));

p->data=e;

q->next=p;

q=q->next;

scanf("%d",&e);

}

q->next=null;

}

voiddisplay(linklist*s)

{

linklist*p=s->next;

if(s->next==null)

printf("thelinklistisempty!

\n");

else

{

printf("outputthedata:

\n");

while(p!

=null)

{

printf("%5d",p->data);

p=p->next;

}

}

printf("\n");

}

voidsort(linklist*s)

{

linklist*p,*q;

elemtypet;

p=s->next;

while(p!

=null)

{

q=p->next;

while(q!

=null)

{

if(p->data>q->data)

{

t=p->data;

p->data=q->data;

q->data=t;

}

q=q->next;

}

p=p->next;

}

}

voidadd(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

{

q2->next=q1->next;

q1->next=p2->next;

p2->next=q1;

p2=p2->next;

q1=q2->next;

}

}

if(q1!

=null)

p2->next=q1;

}

voidmain()

{

linklist*s1,*s2;

s1=(linklist*)malloc(sizeof(linklist));

ini(s1);

create(s1);

display(s1);

sort(s1);

display(s1);

s2=(linklist*)malloc(sizeof(linklist));

ini(s2);

create(s2);

display(s2);

sort(s2);

display(s2);

add(s1,s2);

display(s1);

}

 

八、实验运行结果显示:

 

9、实验收获和体会:

十、参考文献

[1]赵国玲.C语言与数据结构[M].北京:

电子工业出版社,1999.11:

120-146

[2]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:

清华大学出版社,2006.10:

44-52

[3]严蔚敏.数据结构C语言[M].北京:

清华大学出版社,2006.10:

110-135

[4]谭浩强.C程序设计指导[M].北京:

清华大学出版社,2005

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

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

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