欢迎来到天天文库
浏览记录
ID:43465072
大小:230.01 KB
页数:14页
时间:2019-10-03
《单链表的基本操作 C语言课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程设计(论文)题目名称单链表的基本操作课程名称C语言程序课程设计学生姓名学号系、专业信息工程系、网络工程专业指导教师成娅辉2013年6月6日14目录1前言32需求分析32.1课程设计目的32.2课程设计任务32.3设计环境32.4开发语言33分析和设计33.1模块设计33.2系统流程图43.3主要模块的流程图64具体代码实现95课程设计总结125.1程序运行结果125.2课程设计体会12参考文献13致谢13141前言我们这学期学习了开关语句,循环语句、链表、函数体、指针等的应用,我们在完成课程设计任务时
2、就主要用到这些知识点,本课题是单链表的简单操作,定义四个子函数分别用来创建链表、输出链表、插入数据以及删除数据,主函数中主要用到开关语句来进行选择调用哪个子函数,下面就是课程设计的主要内容。2需求分析2.1课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。2.2课程设计任务输入一组正整数,以-1标志结束,用函数实现:(1)将这些
3、正整数作为链表结点的data域建立一个非递减有序的单链表,并输出该单链表;(2)往该链表中插入一个正整数,使其仍保持非递减有序,输出插入操作后的单链表;(3)删除链表中第i个结点,输出删除操作后的单链表,i从键盘输入。2.3设计环境(1)WINDOWS7系统(2)VisualC++2.4开发语言C语言3分析和设计3.1模块设计定义链表结点类型structnode表示结点中的信息,信息包括数据域data(用于存放结点中的有用数据)以及指针域next(用于存放下一个结点的地址),并将链表结点类型名改为NODE
4、。如下所示:14typedefstructnode{intdata;structnode*next;}NODE;定义函数NODE*create_llist_sorted(),用来创建非递减有序带头结点的单链表,定义四个指针NODE*h,*p,*q,*s,头指针指向第一个结点,并且分配空间给头指针h,使头指针不为空,*p指向单链表中某一结点,*q指向*p的前驱,*s指向输入的数据,将数据逐个输入,将输入的数据通过循环语句不断进行比较,其中先使*q指向*h所指位置,*p指向*h的下一个位置,不断将输入的每一个
5、数据与链表中的数据相比较,找到插入位置,然后移动*p,*q,直到*p为空指针且*s所指数据小于等于*p所指数据,从而使数据有序,最后返回头指针。详细程序见后文中的具体代码实现。定义函数voidoutput(),用来输出头指针h所指的单链表,因为此链表有头结点,所以定义一个指针NODE*p,*p指向h的下一个位置,不断地将*p所指数据输出并且移动*p,直到*p为空指针。详细程序见后文中的具体代码实现。定义函数voidinsert(NODE*h,intx),使元素x插入到单链表h中之后链表中数据仍有序,定义三
6、个指针NODE*p,*q,*m,*q指向头指针所指位置,*p指向*q的下一个位置,*m指向要插入的数据x,将数据插入链表中去后将数据不断进行比较,直至*p为空指针且*m所指数据小于等于*p所指数据,移动*p,*q,使数据仍然有序。详细程序见后文中的具体代码实现。定义函数NODE*del(NODE*h,inti),用于删除单链表h中第i个结点,定义两个指针*p,*q,用指针p来从第一个结点开始查找需要删除的结点,指针q是指针p的前驱,查找过程中,不断移动指针p,q,直至找到需要删除的结点,如果*p为空指针,
7、则表示链表中没有需要删除的结点,最后返回头指针。详细程序见后文中的具体代码实现。主函数主要是采用开关分支语句对几个子函数进行调用。3.2系统模块流程图14开始输出菜单1NY输入nn=1NY调用创建单链表函NODE*create_llist_sorted();数n=3n=2?NY调用输出函数voidoutput(NODE*h)Nn=0??n=4n=4?Y调用插入函数voidinsert(NODE*h,intx);并输出N结束调用删除函数NODE*del(NODE*h,inti)退出Y结束Y图3.1系统模块流
8、程图143.3主要模块的流程图(1)输出函数流程图(如图3.2)p=h->nextp!=NULL?NY输出p->datap=p->next图3.2.输出函数流程图(2)插入函数流程图(如图3.3)m=(NODE*)malloc(sizeof(NODE));m->data=x;q=h;p=q->next;m->data=x;q=h;p=q->next;q=h;p=q->next;p!=NULL&&m->data>p->dataN
此文档下载收益归作者所有