




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(论文)题 目 名 称 单链表的基本操作 课 程 名 称 C语言程序课程设计 学 生 姓 名 刘 依 学 号 1341302021 系 、专 业 信息工程系、计算机科学与技术专业 指 导 教 师 成娅辉 2014年 5月 10 日目 录1 前言12 需求分析12.1 课程设计目的12.2 课程设计任务12.3 设计环境12.4 开发语言13 分析和设计13.1 模块设计23.2 系统流程图23.3 主要模块的流程图34 具体代码实现45 课程设计总结95.1 程序运行结果 / 预期运行结果105.2 课程设计体会12参考文献12致 谢121 前言编写一个单链表程序来。输入一组正整数,以-1标志结束,往该链表中插入一个正整数,使其仍保持非递减有序,删除链表中第i个结点,在每次执行链表结束时都要输出执行该操作之后的链表,最后结束该链表。2 需求分析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。2.2 课程设计任务(1) 输入一组正整数,以-1标志结束,用函数实现;(2) 将这些正整数作为链表结点的data域建立一个非递减有序的单链表,并输出该单链表;(3)往该链表中插入一个正整数,使其仍保持非递减有序,输出插入操作后的单链表;(4)删除链表中第i个结点,输出删除操作后的单链表,i从键盘输入。2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C+或TC集成开发环境2.4 开发语言C语言3 分析和设计(1) 首先我们要定义一个函数用来建立一个链表;要使这个链表中个数据能保持一个非递减有序。(2) 建立一个函数输出这个链表中的所有数据。(3) 然后我们要定义一个函数用来插入一个数链表任然要保持有序;首先我们要通过for(q=h,p=h-next;p!=NULL&s-datap-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 系统流程图 调用输出函数output() 调用插入函数insert 调用删除函数del()开始结束调用创建链表函数create-list-sorted()图3.1 系统流程图3.3 主要模块的流程图NODE *create_list_sorted();图3.2 函数 *create_list_sorted的流程图是否否是返回h指针返回h指针返回h指针输入xq=h,p=h-next;输入xq-next=s;s-next=p;q-next=s;s-next=p; q-next=s;s-next=p;p=p-next,q=q-next;p!=NULL&s-datap-datas-data=x;s-next=NULL;s=(NODE *)malloc(sizeof(NODE)h-next=NULL定义整型xx!=-1 h=(NODE *)malloc(sizeof(NODE);定义结构体指针变量*h,*p,*q,*s;定义结构体指针变量*pvoid output(NODE *h)p=h-next否p!=NULL是输出p-datap=p-next输出回车图3.3 函数output的流程图void insert(NODE *h, int x)定义结构体指针变量*p,*q,*ss=(NODE *)malloc(sizeof(NODE)s-data=x; s-next=NULLp!=NULL&s-datap-dataq=h,p=h-next否是q-next=s,s-next=pq-next=s;s-next=p;p=p-next,q=q-next图3.4 函数 insert的流程图void del(NODE *h, int i)定义结构体指针变量*p,*q和整型变量jp=h,q=h;j=2p!=NULL&jnext=p-nextq=p,p=p-nextj+图3.5 函数del的流程图4 具体代码实现/*单链表的基本操作*/#includestdio.h#includemath.h#includestring.h#includestdlib.htypedef struct nodeint data; struct node *next;NODE;/*链表结点类型定义*/*函数声明*/NODE *create_list_sorted();/*建立一个非递减有序的带头结点的单链表,返回其头指针*/void output(NODE *h);/*输出头指针h所指单链表*/void insert(NODE *h, int x);/*将元素x插入到单链表h中仍有序*/void del(NODE *h, int i);/*删除单链表h中第i个结点*/*主函数*/void main()NODE *head;int x,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) case 1:head=create_list_sorted();break; case 2:output(head);break; case 3:printf(please input inserted data:); scanf(%d,&x);insert(head,x);output(head);break; case 4:printf(please input deleted location:); scanf(%d,&i);del(head,i);output(head);break; case 0:exit(0); default:printf(输入错误,请重新选择!n); /*子函数*/NODE *create_list_sorted()/*建立一个非递减有序的带头结点的单链表,返回其头指针*/int x;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-datap-data;p=p-next,q=q-next);/*不断比较,找到插入位置。注意:循环条件p!=NULL必须先判断,即放在&左边*/ q-next=s;s-next=p; scanf(%d,&x); return h;void output(NODE *h)/*输出头指针h所指单链表*/ NODE *p;for(p=h-next;p!=NULL;p=p-next) printf(%d ,p-data);printf(n);void insert(NODE *h, int x)/*将元素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-datap-data;p=p-next,q=q-next); q-next=s;s-next=p;void del(NODE *h, int i)/*删除单链表h中第i个结点*/ NODE *p,*q;int j;p=h;q=h;for(j=2;p!=NULL&jnext;q-next=p-next;5 课程设计总结5.1 程序运行结果 5.2 课程设计体会在课程设计中,我们遇到了大大小小很多个问题,在发现问题和解决问题的过程中我们学会很多。知道一个小小的错误会导致整个程序的功能就不同了。在程序设计中我们必须考虑程序的直观性和全面性,还有可读性;让程序更容易让人看懂。两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握如何才能完成好一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互帮助,相互学习,相互监督。设计从不同的方面考验着我们,不仅仅考验我们的知识,更重要的是考验我们的动手能力。这件是要你说怎么做你会说,但是在真正的动手中你却有可能就不知道从何下手,所以在很多方面都要学习的。课程设计培养了我们的动手能力,但它也不只是针对这一个方面,它涉及很多方面,能够全方面锻炼一个人。参考文献1黄同成,周红波程序设计基础教程(C语言)M湖南人民出版社,20112黄同成,黄磊程序设计实践教程(C语言)M湖南人民出版社,20113谭浩强C程序设计(第三版)M北京:清华大学出版社,2005致 谢在这次课程设计的过程中,我得到了许多人的帮助。首先我要感谢成老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灵活用工与外包合作协议合同范本2024
- 小王子读后感寻找内心的童话(13篇)
- 记一次难忘的集体活动事件作文(15篇)
- 市场营销策略策划方案模板市场调研及目标客户分析
- 中航安全培训试题及答案解析
- 客户服务响应流程模板快速响应客户需求的标准化步骤
- 财务管理标准化工具集之财务报表模板
- 教育科研诚信承诺书范本7篇范文
- 合资设立企业协议
- 我的梦想小屋记叙文(14篇)
- 燃气运营安全管理方案
- 2025-2026学年粤教粤科版(2024)小学科学二年级上册(全册)教学设计(附目录)
- 查冻扣业务知识公安机关等执法单位相关试题试卷
- 济南战役教学课件
- 小学生班干部竞选
- 2025年秋教科版(2024)小学科学三年级上册教学计划及教学进度表(第一学期)
- 妇科外阴解剖学课件
- 2025四川省水电投资经营集团有限公司所属电力公司员工招聘6人考试模拟试题及答案解析
- 安置协议转让合同范本
- (高清版)DBJ∕T 13-318-2025 《建筑施工盘扣式钢管脚手架安全技术标准》
- 《机械基础(第二版)》中职全套教学课件
评论
0/150
提交评论