- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
《数据结构》课程设计报告
    之线性表及应用
                     
  
信息工程学院
计算机科学与技术
                   姓名:XX
                                      班级:XX
                                    学号:XX
程序设计书目录
课程题目
设计目标
问题描述
需求分析
概要设计
详细设计(给出算法的伪码描述和流程图)
测试分析
使用说明
测试数据
课程设计总结
一.课程题目:线性表及应用(班级通讯录管理系统)。
二.设计目标
 通过对通讯录管理链表的课程设计,加深对程序设计的理解,熟练掌握和加深c语言的基本知识和语法规范,同时更进一步地理解数据结构对单链表知识的应用,也提高了我们进行程序设计的基本能力。这次课程设计提供一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实际运用的能力。
三.问题描述
 为某个班级建立一个学生通讯录管理系统,可以方便查询每一个学生的宿舍电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
四.需求分析
建立一个班级通讯录的管理系统,从而方便查询其每个学生的一些通讯信息。
首先,应运用c语言中结构体的知识。把学生的各项信息储存到结构体的链表中,定义一个新的结构体类型struct(struct是声明结构体时所必须使用的关键字)它向编译系统声明这是一个“结构体类型”,它包括num, name ,phone等不同类型的数据项。
其次:运用数据结构中线性表的知识。线性表的存储结构分为线性表的线性存储结构和线性表的链式存储结构, 线性表的顺序存储结构是指用一组地址连续的存储单元一次存储线性表的数据元素。线性表的链式存储结构则是通过指针反映元素之间的关系,不要求逻辑上相邻的元素在物理位置上也相邻,所以该方法可以克服顺序表的一些缺点。所以本题应运用线性链表的链式存储结构。线性链表的链式存储结构又分为单链表、循环链表和双链表,本题运用单链表的知识。
1.通讯录链表的建立。 	
建立单链表有两种方法,头插入法和尾插入法。头插入法是将每次新插入的结点插入在链表的表头,而尾插入法是将新插入的结点插入到链表的表尾。在这个通讯录的建立中将采用尾插入法建立链表。
2.链表的插入。
链表结点的插入是要求将一个通讯录数据结点按其编号的顺序插入有序通讯录表的相应位置,以保持其有序性。使用两个指针变量分别指向刚访问的结点和下一个结点,寻找插入结点的位置,其中一个指向待插入位置的前一个结点。
3.链表的查询。
   首先输入要查找的通讯录的学号、姓名、宿舍电话号或手机号码,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,否则返回一个空的指针。
4.单链表的删除。
输入要查找的通讯录的学号或者姓名,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,删除结点即可。
5.学生通讯信息的修改。
   首先通过链表的查询找到要修改的结点,找到后就可以对的学号、姓名、宿舍电话号码、手机号码、电子邮箱任意一项进行改。
6.通讯录的输出。
   将表头指针赋给一个指针变量,然后用其向后扫描,直至表尾,指针为空为止。
五.概要设计
1.本程序主要运用了结构体、线性表(单链表)、及函数调用的相关知识。
A.定义学生通讯录结点类型:
typedef struct  // 通讯录结点类型
{ 
   char num[10];        /* 学号 */ 
   char name[15];       /*姓名*/
   char phone[15];       /*宿舍电话*/
   char call[15];        /*手机号*/
   char e_mail[20];    /* 电子邮箱*/
}datatype;
B. 线性表的链式存储结构定义:
typedef struct node{
	datatype data;   /*结点数据域*/
	struct node *next;  /*结点指针域*/
}Dnode;
typedef struct node *LinkList;
LinkList head;
Dnode *p;
2. 进入主函数,会出现菜单供我们选择:选择1,则调用尾插入法建立通讯录链表函数LinkList  CreateList();选择2,则调用通讯录链表结点插入函数InsertNode(head,p);选择3,则调用通讯录链表上结点查询函数ListFind(head);选择4,则调用有序通讯录链表结点的删除函
                
原创力文档
                        

文档评论(0)