C语言课程设计链表操作

课 程 设 计

课程名称____C 语言课程设计____ 题目名称 学生学院 专业班级 学 号 链表操作

学生姓名 指导教师

2012



10



24



目录
1、课程设计简介 1.1 要求 1.2 意义和目的 1.3 内容 1.4 课程设计时间

2、具体实现 2.1 程序总体方案

2.1.1 程序设计思想 2.1.2 程序结构或流程图 2.2 改进方案 2.2.1 改进一 2.2.1.1 改进方案 2.2.1.2 具体实现 2.2.1.3 实现效果 2.2.2 改进二 2.2.2.1 改进方案 2.2.2.2 具体实现 2.2.2.3 实现效果 2.2.3 改进三 2.2.3.1 改进方案 2.2.3.2 具体实现 2.2.3.3 实现效果

3、总体小结 在整个设计过程中的心得体会

4、参考文献

1、课程设计简介 1.1 要求 参加本课程设计的学生, 应当认真完成本课程设计的全部过程。 并以最终课程设计成果 来证明其独立完成各种实际任务的能力。 从而, 反映出理解和运用本课程知识的水平和能力。 1.2 意义和目的 意义:C 语言是电子科学与技术专业的重要专业基础课。在很多后续课程中,都要使用 到 C 语言。 学生通过对 C 语言的学习, 已经具备了使用 C 语言编写简单的应用程序的能力。 为了加 强程序设计基础,开设课程设计课,使学生对 C 语言有更全面的理解,进一步提高运用 C 语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。 目的: 1)提高用程序设计解决实际问题的能力。 2)通过提出算法、指定输入输出来设计一个解决方案。 3)用 C 语言合理地开发两个简洁有效的程序代码来实现该设计。 4)测试程序是否工作且满足设计指标并评价其效率。 1.3 内容 链表操作题(包括建立、插入、删除、打印等) (参考教材) ; 1.4 课程设计时间 下达时间 9 月 26 日;完成时间 10 月 12 日。

2、具体实现 2.1 程序总体方案 2.1.1 程序设计思想 通过在主函数循环调用各个函数,从而实现对链表的连续操作,最终实现链表的新建、 打印、查找、保存、读取、更新、删除等等操作,进而管理学生信息,并保存学生的各种信 息,方便下一次操作。链表是以学生学号排序,当出现学号相同时会有提示,并结束本次操 作,成功实现一个学号对应一位学生。

2.1.2 程序结构或流程图

主函数

0.退出

1.新建

2.打印

3.查找

4.保存 5.读取 6.更新 7.增加 8.删除 9.删除全部

2.2 改进方案 2.2.1 改进一 2.2.1.1 改进方案 刚开始链表是按插入顺序进行排列的, 打印的时候也没有按序号打印, 总体看起来很乱。 所以,在新建、插入等需要增加新的学生信息的时候,调用按学号排序的函数,这样打印的 时候就显得很工整,有条理。 2.2.1.2 具体实现 struct Student *sort(struct Student *pHead,struct Student *temp) { struct Student *p0,*p1,*p2; p1=pHead; p0=temp; if(pHead==NULL) { pHead=p0;p0->pS=NULL; } else { while((p0->id>p1->id)&&(p1->pS!=NULL)) { p2=p1; p1=p1->pS; } if(p0->id<p1->id) { if(pHead==p1) pHead=p0; else p2->pS=p0; p0->pS=p1; } else if(p0->id==p1->id) //发现学号相同 { printf("学号为“%d”的成绩信息已输入,请从新输入!\n",p0->id); m_num=0;

} else { p1->pS=p0; p0->pS=NULL; } } return pHead; } 2.2.1.3 实现效果

2.2.2 改进二 2.2.2.1 改进方案 一开始没有建立数据的时候, 是无法提取数据的, 而要是在开头的时候先提取数据的话, 就会出现读不到数据,然后指针 phead 不为 NULL,而接下来的操作就会出现问题。所以, 在无法找到数据的时候,我们就返回一个指针 phead=NULL,这样,头指针还是指向空函数, 说明我们没有成功读取数据, 或者未保存任何数据信息。 这样在接下来的操作就不会出错了。

2.2.2.2 具体实现 struct Student *ReadFromFile() { FILE *pfile=NULL; pfile=fopen("D:\\student.txt","r"); if(pfile==NULL) { printf("无法找到文件!"); pHead=NULL; return pHead; } else { ...... //这里是读取数据操作 } } 2.2.2.3 实现效果

2.2.3 改进三 2.2.3.1 改进方案 当我们建立链表的时候是把链表数据保存在内存里面, 而删除之类操作内存还没有被释 放,这样会增加电脑的内存占用,同时会增加能量的电脑能量消耗,这样不利于电脑的稳定 工作,且浪费资源,这时我们就需要把那些没用的链表内存释放了。通过 free(*p)函数实 现对内存的释放。 2.2.3.2 具体实现 1)删除一个学生只需要 if(p1==pHead) pHead=p1->pS; else p2->pS=p1->pS; free(p1); 2)//===================删除全部学生信息,释放内存==================== struct Student * DeleteAll(struct Student *pHead) {

struct Student *p0,*p1; if(pHead!=NULL) { p0=pHead; while(p0->pS) { p1=p0->pS; free(p0); p0=p1; } free(p0); } printf("删除全部学生信息成功!\n"); pHead=NULL; return pHead; } 2.2.3.3 实现效果

3、总体小结 链表题考察了我们对于链表知识的理解, 要求熟练掌握链表的建立, 结点的插入, 查找, 删除, 输出等方法。 所以, 着重复习了书本中关于链表的知识, 以便能够更加好的完成程序。 通过上一次课程设计的锻炼, 对于本次课程设计的要求和内容偶遇了更加深的理解。 通过本 次课程设计,对链表的知识也有了进一步的掌握和理解。刚开始不够细心,在调试过程中遇 到的问题,通过及时的查找书籍寻找答案,并根据所学知识,理清思路去解决,不断完善程 序。在设计过程中,不断的通过与同学交流、上网找资料、查阅书籍等等方法,克服每一个 难题,并与同学在讨论中增加了相互感情,扩大了自己的知识面,让一些以前不知道的,或 者更加实用的方法得以用在自己的程序代码上。 通过这次课程设计,我了解到编程并不是那么的容易,也并不是那么多难,关键是需要 有:1、编程习惯;2、对算法的认知能力;3、语言掌握能力。除了对编程能力的认识外,

我还知道了,C 语言并不是那么的难,关键是看你怎样去了解代码,使用代码,让自己的程 序更加的完善,对资源的利用更加的充分。

4、参考文献 [1]陈显刚.c 语言程序设计[M].北京:北京理工大学出版社,2007. [2]谭浩强.c 语言程序设计[M].北京:清华大学出版社,1998. [3]徐新华.c 语言程序设计教程[M].北京:中国水利水电出版社,2001. [4]伍一,等.c 语言程序设计与实训教程[M].北京:清华大学出版社,2007. [5]徐翠霞. c 语言程序设计案例教程[M].北京:北京大学出版社,2008. [6]徐卓群等.数据结构,高等教育出版社,1987. [7]陈小平.数据结构导论,经济科学出版社.2000.


相关文档

C语言设计 链表的综合操作
C语言链表的基本操作
城市链表课程设计(C语言)
C语言链表基本操作
C语言链表-基本操作
C语言课程设计报告——十字交叉链表的应用
C 语言作业(链表的使用)
C语言链表操作
宿舍管理系统 链表 C语言 C++ 数据结构 链表 课程设计
C语言 链表操作
电脑版