《数据结构》课程设计报告之线性表及应用信息工程学院计算机科学与技术姓名:XX班级:XX学号:XX程序设计书目录一.课程题目二.设计目标三.问题描述四.需求分析五.概要设计六.详细设计(给出算法的伪码描述和流程图)七.测试分析八.使用说明九.测试数据十.课程设计总结一.课程题目:线性表及应用(班级通讯录管理系统)。二.设计目标通过对通讯录管理链表的课程设计,加深对程序设计的理解,熟练掌握和加深c语言的基本知识和语法规范,同时更进一步地理解数据结构对单链表知识的应用,也提高了我们进行程序设计的基本能力。这次课程设计提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实际运用的能力。三.问题描述为某个班级建立一个学生通讯录管理系统,可以方便查询每一个学生的宿舍电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。四.需求分析建立一个班级通讯录的管理系统,从而方便查询其每个学生的一些通讯信息。首先,应运用c语言中结构体的知识。把学生的各项信息储存到结构体的链表中,定义一个新的结构体类型struct(struct是声明结构体时所必须使用的关键字)它向编译系统声明这是一个“结构体类型”,它包括num,name,phone等不同类型的数据项。其次:运用数据结构中线性表的知识。线性表的存储结构分为线性表的线性存储结构和线性表的链式存储结构,线性表的顺序存储结构是指用一组地址连续的存储单元一次存储线性表的数据元素。线性表的链式存储结构则是通过指针反映元素之间的关系,不要求逻辑上相邻的元素在物理位置上也相邻,所以该方法可以克服顺序表的一些缺点。所以本题应运用线性链表的链式存储结构。线性链表的链式存储结构又分为单链表、循环链表和双链表,本题运用单链表的知识。1.通讯录链表的建立。建立单链表有两种方法,头插入法和尾插入法。头插入法是将每次新插入的结点插入在链表的表头,而尾插入法是将新插入的结点插入到链表的表尾。在这个通讯录的建立中将采用尾插入法建立链表。2.链表的插入。链表结点的插入是要求将一个通讯录数据结点按其编号的顺序插入有序通讯录表的相应位置,以保持其有序性。使用两个指针变量分别指向刚访问的结点和下一个结点,寻找插入结点的位置,其中一个指向待插入位置的前一个结点。3.链表的查询。首先输入要查找的通讯录的学号、姓名、宿舍电话号或手机号码,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,否则返回一个空的指针。4.单链表的删除。输入要查找的通讯录的学号或者姓名,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,删除结点即可。5.学生通讯信息的修改。首先通过链表的查询找到要修改的结点,找到后就可以对的学号、姓名、宿舍电话号码、手机号码、电子邮箱任意一项进行改。6.通讯录的输出。将表头指针赋给一个指针变量,然后用其向后扫描,直至表尾,指针为空为止。五.概要设计1.本程序主要运用了结构体、线性表(单链表)、及函数调用的相关知识。A.定义学生通讯录结点类型:typedefstruct//通讯录结点类型{charnum[10];/*学号*/charname[15];/*姓名*/charphone[15];/*宿舍电话*/charcall[15];/*手机号*/chare_mail[20];/*电子邮箱*/}datatype;B.线性表的链式存储结构定义:typedefstructnode{datatypedata;/*结点数据域*/structnode*next;/*结点指针域*/}Dnode;typedefstructnode*LinkList;LinkListhead;Dnode*p;2.进入主函数,会出现菜单供我们选择:选择1,则调用尾插入法建立通讯录链表函数LinkListCreateList();选择2,则调用通讯录链表结点插入函数InsertNode(head,p);选择3,则调用通讯录链表上结点查询函数ListFind(head);选择4,则调用有序通讯录链表结点的删除函数DeleteNode(head);选择5,则调用通讯录链表的输出函数disply(head);;选择6,则调用修改通讯信息函数Dnode*Change(Dnode*head,chark[]);选择0,退出管理系统。六.详细设计流程图:开始菜单通讯...