课程设计报告
课程名称 数据结构课程设计 课题名称 通讯录的制作
学 院 信息工程学院 姓 名
学 号
专业层次 班 级
任课教师 0
数据结构课程设计
目录
一、课程设计题目及所涉及知识点 .................................................................. 2 二、课程设计思路及算法描述 ............................................................................. 2
设计思路 ................................................................................................................................... 2 算法描述 ................................................................................................................................... 3
三、课程设计中遇到的难点及解决办法 ....................................................... 4 四、总结 ................................................................................................................................. 4 五、结论 ................................................................................................................................. 4 六、附录—主要源程序代码及运行结果 ....................................................... 4
1
数据结构课程设计
一、课程设计题目及所涉及知识点
设计题目:通讯录的制作
知识点:链表的增,删,改,查、基本的文件操作、字符数组的处理函数、分支结构和循环结构的熟练使用、结构体的定义与调用、函数的调用、结构体指针在各函数之间的调用。
二、课程设计思路及算法描述
设计思路:1、确定程序要实现的功能即(1)实现对数据文件的保存,对数据记录进行添
加,可以对数据记录进行查询,可以对数据记录进行删除,可以对数据记录进行显示,可以对数据记录进行修改。
(2)在实现上述函数之后,设置分支结构,对操作进行选择。上述函数中有几种不同的操作需要用户按照自己的意愿选择。如,查询方式的选择,删除方式的选择等。
2、确定程序所需要的功能块,存储结构-结构体,malloc申请存储空间,各功能函数—对链表进行初始化line *initLine(line *p) ,对链表进行插入操作line *insertLine(line *p), 将整理好的数据保存到文件内:saveFile(line *p),姓名查询selectLine_name(),手机号查询selectLine_Id(),使用姓名进行修改line *amendLine(),使用用手机号进行修改line *amendLine_num(),删除刚插入的数据line *delLine(),指定名字删除int select_name(),指定手机号删除select_ID(),具体执行删除的链表操作line *delLine(),显示链表数据display(),控制台程序主界面zcd(),返回函数fh(),主函数部分main();。
3、编写代码具体实现各项功能,并进行调试。
算法描述:
链表插入(Link List Insertion)的基本思想:
同顺序表一样,向链表中增添元素,根据添加位置不同,可分为以下 3 种情况:插入到链表的头部(头节点之后),作为首元节点;插入到链表中间的某个位置;插入到链表的最末端,作为链表中最后一个数据元素;虽然新元素的插入位置不固定,但是链表插入元素的思想是固定的,只需做以下两步操作,即可将新元素插入到指定的位置:
1.将新结点的 next 指针指向插入位置后的结点; 2.将插入位置前结点的 next 指针指向插入结点; 算法实现:
//p为原链表,elem表示新数据元素,add表示新元素要插入的位置 link * insertElem(link * p,int elem,int add){ link * temp=p;//创建临时结点temp //首先找到要插入位置的上一个结点 for (int i=1; i printf(\插入位置无效\\n\ return p; } temp=temp->next; } //创建插入结点c link * c=(link*)malloc(sizeof(link)); 2