C课程设计报告链表.docx

上传人:b****5 文档编号:7211764 上传时间:2023-01-21 格式:DOCX 页数:16 大小:211.45KB
下载 相关 举报
C课程设计报告链表.docx_第1页
第1页 / 共16页
C课程设计报告链表.docx_第2页
第2页 / 共16页
C课程设计报告链表.docx_第3页
第3页 / 共16页
C课程设计报告链表.docx_第4页
第4页 / 共16页
C课程设计报告链表.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C课程设计报告链表.docx

《C课程设计报告链表.docx》由会员分享,可在线阅读,更多相关《C课程设计报告链表.docx(16页珍藏版)》请在冰豆网上搜索。

C课程设计报告链表.docx

C课程设计报告链表

 

课程设计(论文)

 

题目名称单链表的基本操作

课程名称C语言程序课程设计

学生姓名依

学号1341302021

系、专业信息工程系、计算机科学与技术专业

指导教师成娅辉

 

2014年5月10日

1前言

编写一个单链表程序来。

输入一组正整数,以-1标志结束,往该链表中插入一个正整数,使其仍保持非递减有序,删除链表中第i个结点,在每次执行链表结束时都要输出执行该操作之后的链表,最后结束该链表。

2需求分析

2.1课程设计目的

学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。

通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。

2.2课程设计任务

(1)输入一组正整数,以-1标志结束,用函数实现;

(2)将这些正整数作为链表结点的data域建立一个非递减有序的单链表,并输出该单链表;

(3)往该链表中插入一个正整数,使其仍保持非递减有序,输出插入操作后的单链表;

(4)删除链表中第i个结点,输出删除操作后的单链表,i从键盘输入。

2.3设计环境

(1)WINDOWS2000/2003/XP/7/Vista系统

(2)VisualC++或TC集成开发环境

2.4开发语言

C语言

3分析和设计

(1)首先我们要定义一个函数用来建立一个链表;要使这个链表中个数据能保持一个非递减有序。

(2)建立一个函数输出这个链表中的所有数据。

(3)然后我们要定义一个函数用来插入一个数链表任然要保持有序;首先我们要通过for(q=h,p=h->next;p!

=NULL&&s->data>p->data;p=p->next,q=q->next);

这语句来找打其位置。

(4)最后一个函数用来删除第i个结点,关键要把指针指向第i个结点。

然后删除它。

3.1模块设计

设定一个总函数包括几个子函数还实现题目的功能。

程序中所用到的函数:

(1)定义函数create_list_sorted(),创建一个非递减有序的链表;

(2)定义函数output(),输出链表里的值;

(3)定义函数insert(),把一个数插入链表中,链表任然保持非递减有序。

(4)定义函数del(),输入i,然后删除链表中的第i个结点。

3.2系统流程图

 

图3.1系统流程图

 

3.3主要模块的流程图

 

4具体代码实现

/*单链表的基本操作*/

#include"stdio.h"

#include"math.h"

#include"string.h"

#include"stdlib.h"

typedefstructnode

{intdata;

structnode*next;

}NODE;/*链表结点类型定义*/

/********函数声明********/

NODE*create_list_sorted();

/*建立一个非递减有序的带头结点的单链表,返回其头指针*/

voidoutput(NODE*h);/*输出头指针h所指单链表*/

voidinsert(NODE*h,intx);/*将元素x插入到单链表h中仍有序*/

voiddel(NODE*h,inti);/*删除单链表h中第i个结点*/

/********主函数********/

voidmain()

{NODE*head;intx,i,n;

printf("********单链表的基本操作********\n");/*输出菜单*/

printf("1.建立\n");

printf("2.输出\n");

printf("3.插入\n");

printf("4.删除\n");

printf("0.退出\n");

while

(1)

{printf("请选择:

");

scanf("%d",&n);

switch(n)

{case1:

head=create_list_sorted();break;

case2:

output(head);break;

case3:

printf("pleaseinputinserteddata:

");

scanf("%d",&x);insert(head,x);output(head);break;

case4:

printf("pleaseinputdeletedlocation:

");

scanf("%d",&i);del(head,i);output(head);break;

case0:

exit(0);

default:

printf("输入错误,请重新选择!

\n");

}

}

}

/********子函数********/

NODE*create_list_sorted()

/*建立一个非递减有序的带头结点的单链表,返回其头指针*/

{intx;NODE*h,*p,*q,*s;/*p指向单链表中某一结点,q指向*p的前驱*/

h=(NODE*)malloc(sizeof(NODE));h->next=NULL;

scanf("%d",&x);

while(x!

=-1)

{s=(NODE*)malloc(sizeof(NODE));

s->data=x;

s->next=NULL;

for(q=h,p=h->next;p!

=NULL&&s->data>p->data;p=p->next,q=q->next);/*不

断比较,找到插入位置。

注意:

循环条件p!

=NULL必须先判断,即放在&&左边*/

q->next=s;s->next=p;

scanf("%d",&x);

}

returnh;

}

voidoutput(NODE*h)/*输出头指针h所指单链表*/

{NODE*p;

for(p=h->next;p!

=NULL;p=p->next)

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

printf("\n");

}

voidinsert(NODE*h,intx)/*将元素x插入到单链表h中仍有序*/

{NODE*p,*q,*s;

s=(NODE*)malloc(sizeof(NODE));

s->data=x;s->next=NULL;

for(q=h,p=h->next;p!

=NULL&&s->data>p->data;p=p->next,q=q->next);

q->next=s;s->next=p;

}

voiddel(NODE*h,inti)/*删除单链表h中第i个结点*/

{NODE*p,*q;intj;

p=h;q=h;

for(j=2;p!

=NULL&&j<=i+1;j++)

{q=p;p=p->next;}

q->next=p->next;

}

5课程设计总结

5.1程序运行结果

 

5.2课程设计体会

在课程设计中,我们遇到了大大小小很多个问题,在发现问题和解决问题的过程中我们学会很多。

知道一个小小的错误会导致整个程序的功能就不同了。

在程序设计中我们必须考虑程序的直观性和全面性,还有可读性;让程序更容易让人看懂。

两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握如何才能完成好一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互帮助,相互学习,相互监督。

设计从不同的方面考验着我们,不仅仅考验我们的知识,更重要的是考验我们的动手能力。

这件是要你说怎么做你会说,但是在真正的动手中你却有可能就不知道从何下手,所以在很多方面都要学习的。

课程设计培养了我们的动手能力,但它也不只是针对这一个方面,它涉及很多方面,能够全方面锻炼一个人。

参考文献

[1]黄同成,周红波.程序设计基础教程(C语言)[M].人民,2011.

[2]黄同成,黄磊.程序设计实践教程(C语言)[M].人民,2011.

[3]谭浩强.C程序设计(第三版)[M].:

清华大学,2005.

在这次课程设计的过程中,我得到了许多人的帮助。

首先我要感成老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。

在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力,找到了自己的不足,然后能不断的改正自己,让自己越来越进步。

还要感和我同一设计小组的几位同学,是你们在我平时设计中和我一起探讨问题,并指出我设计上的误区,教我要如何改正,使我能及时的发现问题,让我能顺利的完成程序,没有你们的帮助我不可能这样顺利地完成,所以在此表示感。

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

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1