




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
长治学院长治学院课程设计任务书课程名称: 数据结构课程设计 设计题目:带头结点的并具有头尾指针的单循环链表 系 别: 计算机系 专 业: 网络工程 学生姓名: 王鲁俊 学 号: 07407320 起止日期: 2008年 11月08 日 2008年12月18 日 指导教师: 孙俊杰 课程设计题目带头结点并具有头尾指针的单链表的各种操作姓名王鲁俊学号07407320班级07级计3班系别计算机系专业网络工程组员 王鲁俊 李显指导教师孙俊杰课程设计目的1、 为了熟练地掌握带头节点和头尾指针单循环链表的各种操作;2、 为了以后使用带头节点头尾指针单循环链表时更加地方便。课程设计环境Turboc2、windows XP课程设计任务和要求1 编写带头结点并具有头尾指针的单循环链表。2 密码和存盘程序的编写。3 编写各种操作算法。4 上机调试程序。课程设计工作进度计划序号起止日期工 作 内 容12008110611.15需求分析22008111811.23查阅相关资料320081128123密码和存盘的编写4200812 1412.15操作算法编写520081218上机调试并完成课程设计教研室审核意见:教研室主任签字: 年 月 日教学院(系)审核意见:主任签字: 年 月 日 目 录第一章 需求分析 -3第二章 开发过程 -32.1系统目标-32.2设计出友好的界面- -3 2.3实现基本功能-32.5功能划分-3第三章 系统设计-43.1系统设计方法-43.2数据结构设计-43.3数据结构设计概述-43.4数据实体类型-43.5流程图-53.6程序中的源代码-5 第四章 附录-13第一章 需求分析1.编写带头结点头尾指针的单循环链表,并实现功能如下: 1.编写该单循环链表的环境 2.保存数据 3.建立密码,密码修改 4.单循环链表的位置查找.插入.删除.排序等操作第二章 开发过程2.1系统目标本系统的目标是实现单向链表的各种操作,方便用户对数据的各种操作。2.2 设计友好界面设计友好界面,实现界面人为化,使系统简单,使用户能舒心.方便的实现自己的操作2.3实现一些基本功能在单循环链表的某一位置的前面或后面插入某一数据,删除单向链表中的某一结点,返回某一结点的位置,实现升序排序,降序排序的算法,至零,清空等各种算法。2.4功能划分1.友好界面2.密码编写3.修改密码4.数据存盘5.单循环链表的各种操作第三章 系统设计3.1系统设计的方法 系统设计是把需求转化为软件系统的最重要的环节。系统设计的优劣在根本上决定了软件系统的质量。系统设计的五个方面的要求:体系结构设计,模块设计,数据结构设计与算法设计,用户界面设计。3.2数据结构设计3.2.1数据结构设计概述 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作等的学科。“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据单元在存储器中的分配问题。良好的数据结构设计,可以提高数据信息的存储效率,保证数据信息的完整性和一致性。同时,一个合理的数据结构有利于程序的实现。这里选用TURBOC2作为编译环境。3.2.2数据实体类型节点定义:每个节点包括数据域data,指针域next。 Datanext 链表定义:链表S,头指针Head,尾指针tail Data headData Tail 进入界面1,输入密码3.3 流程图 界面2,执行各项操作定位输出定点后继头节点位判空计算个数指定输出修 改 密 码 存 储 数 据进入界面3,谢谢使用3.4 界面中单链表的部分算法:3.4.1 void gaimi() int i=0; char ch,a6,b6; printf( 请输入原始密码:); ch=getchar(); gets(a); while(yanzheng1(a)!=6) printf( 请输入原始密码:); gets(a); while(1) printf( 输入新设密码:); gets(a); printf( 再次输入新设密码:); gets(b); while(ai=bi) i+; if(i=5)break; else i=0; xiugai(a);void xiugai(char *x) FILE *fp; fp=fopen(mima,wb); fputs(x,fp); printf(t*n); printf(t*n); printf(t*密码修改成功!* *n);printf(“*任意键继续操作*n); printf(t*n); getch(); fclose(fp);int yanzheng1(char *x) FILE *fp; int i=0; char ch; if(fp=fopen(mima,r)=NULL) printf(无密码.n); ch=fgetc(fp); while(ch!=EOF) if(xi=ch) i+; ch=fgetc(fp); if(i=5) printf( 密码正确.n); else printf( 密码错误.n); fclose(fp); return(i);void Insbefore(LNodelist *s)/*在链表中一个结点前插入一个数据5*/ LNode *p,*q,*t; int x,y,i; printf(输入该链表中一个结点的值:n); scanf(%d,&x); p=s-head;t=p-next; if(s-head-data=x) printf(输入要插入的数据:n); scanf(%d,&y); q=(LNode *)malloc(sizeof(LNode); q-data=y; q-next=s-head; s-tail-next=q; s-head=q; else while(p-next-data!=x&p-next!=s-head) p=p-next;t=t-next;if(p-next-data!=x&p-next=s-head) printf(数据插入位不存在!n);else printf(输入要插入的数据:n); scanf(%d,&y); q=(LNode *)malloc(sizeof(LNode); q-data=y; q-next=t; p-next=q; printf(输出插入数据后的链表:n); Printlink(s); printf(是否储存数据.(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(数据没有存储!n);void InsAfter(LNodelist *s) /*在链表中的一个结点后插入一个数据6*/ LNode *p,*q,*t; int x,y,i; printf(输入该链表中的一个结点的值:n); scanf(%d,&x); p=s-head;t=p-next; while(p-data!=x&p-next!=s-head) p=p-next;t=t-next; if(p-data!=x&p-next=s-head)printf(输入的数据不存在!n); else printf(输入要插入的数据:n); scanf(%d,&y); q=(LNode *)malloc(sizeof(LNode); q-data=y; q-next=t; p-next=q; printf(输出插入数据后的链表:n); Printlink(s); printf(是否储存数据.(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(数据没有存储!n);void Setcurelem(LNodelist *s) /*链表中的一个结点用另一个数据替换7*/ LNode *p,*q,*t; int x,y,i; printf(输入链表中被替换的数据:n); scanf(%d,&x); p=s-head;t=p-next; while(p-data!=x&p-next!=s-head) p=p-next;t=t-next; if(p-data!=x)printf( 被更新的数据不存在!); else printf(输入新数据:n); scanf(%d,&y); p-data=y; printf(输出被替换后的单循环链表:n); Printlink(s); printf(是否储存数据.(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(数据没有存储!n); void Getcurelem(LNodelist *s) /*反回链表中的一个结点8*/ LNode *p; int x; printf(输入链表一个结点值:n); scanf(%d,&x); p=s-head; while(p-data!=x&p-next!=s-head) p=p-next; if(p-data!=x)printf(要输出的结点不存在!); else printf(输出该结点的值:n); printf(%d,p-data); void listempt(LNodelist *s) /*判链空9*/ LNode *p;int i=0; p=s-head; while(p-next!=s-head&p!=NULL) p=p-next;i+; if(i=0)printf(链表为空!); else printf(链表不为空!);void lengthlist(LNodelist *s) /*输出单循环链表中元素的个数10*/ LNode *p; int i=0; p=s-head; if(p=NULL) printf(该链表为空链表!); else while(p-next!=s-head) p=p-next;i+; printf(输出链表中元素的个数:n); printf(%d,i); void gethead(LNodelist *s) /*输出第一个结点的位置11*/ printf(输出第一个结点的位置:n); printf(%d,s-head-data);void Nextpos(LNodelist *s) /*在链表中的一个结点直接后继位置14*/ LNode *p,*q; int x,y; printf(输入链表中一个结点值:n); scanf(%d,&x); p=s-head; while(p-data!=x&p-next!=s-head) p=p-next; if(p-data!=x)printf(该结点不存在!);exit(0); else printf(输出该结点的后继位置:n); printf(%d,p-next-data); void Locatepos(LNodelist *s) /*输出链表中第i个结点的位置15*/ LNode *p,*q; int i,j=1; printf(输入链表任意一结点的下标值:); scanf(%d,&i); p=s-head; while(j!=i&p!=s-tail) p=p-next;j+; if(p=s-tail) if(j=i) printf( 输出该结点的值:n); printf(%d,p-data); else printf(输入位置有误!n); else printf(输出该结点的值:n); printf(%d,p-data); void paixu(LNodelist *s)/*单循环链表排序16*/ LNode *p,*q,*t;int i; p=s-head; printf(请选择操作号:n1:从大到小排序.n2:从小到大排序.n); scanf(%d,&i); switch(i) case 1: printf(单循环链表从大到小排序:n); while(p-next!=s-head) q=p-next;while(q!=s-head) if(p-datadata) t=p-data;p-data=q-data;q-data=t; else q=q-next; p=p-next; printf(从大到小输出单循环链表:n); Printlink(s); break; case 2: while(p-next!=s-head) q=p-next; while(q!=s-head) if(p-dataq-data) t=p-data;p-data=q-data;q-data=t; else q=q-next; p=p-next; printf(从小到大输出单循环链表:n); Printlink(s); break; default: printf(输入的操作号不正确!n); printf(是否储存数据.(0:否1:是)n); scanf(%d,&i); if(i=1) chucun(s); else printf(数据没有存储!n);int chucun(LNodelist *s) /*存储数据*/ FILE *fp=NULL; char filename10,ch; LNode *p=s-head; if(s=NULL) printf(链表不存在,请建立链表:); getch(); return 0; printf(输入文件名:); scanf(%s,filename); while(fp=fopen(filename,r)!=NULL) fclose(fp); printf(链表已存在,请从新建立链表n); ch=getchar(); printf(请输入文件名:); scanf(%s,filename); fp=fopen(filename,w); while(p-next!=s-head) fwrite(p,sizeof(LNode),1,fp); p=p-next; fwrite(p,sizeof(LNode),1,fp); fclose(fp); printf(存储成功.n); return(1); int openfile(LNodelist *s)FILE *fp; char filename10; LNode *p=NULL,*q=NULL; p=s-head; printf(请输入要打开的文件名:); sca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加气块材料购货合同范本
- 俩人合伙创业的合同范本
- 农行特约商户服务协议书
- 合伙人固定收益合同范本
- 停车场承包合同补充协议
- 中考签约集训班协议合同
- 位食堂员工劳务合同范本
- 七旬夫妻遗体捐献协议书
- 七座商务车租车协议合同
- 合同猪合作养殖合同范本
- 2025至2030中国家用美容仪器行业项目调研及市场前景预测评估报告
- GB 30080-2025铜及铜合金熔铸安全设计与生产规范
- 2025国投生物制造创新研究院有限公司招聘(31人)笔试备考题库及答案解析
- 人教版九年级化学上册教学课件:第七单元 课题一 第1课时 燃烧的条件 灭火的原理和方法
- 国网面试模拟题:电网运营与规划类面试题目及答案
- 关于外墙维修的方案(3篇)
- 医院空气净化标准
- 2025高中英语学业水平考试会考复习必背词汇表
- 2025年高考日语试卷及答案详解
- 软件需求分析师岗位面试问题及答案
- 2025至2030中国军事上的人工智能行业发展趋势分析与未来投资战略咨询研究报告
评论
0/150
提交评论