ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:200.30KB ,
资源ID:17936450      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17936450.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验一 通讯录Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验一 通讯录Word格式.docx

1、4.编写main()函数测试操作的正确性2. 程序分析编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。每个记录包含姓名、电话号码、住址等个人基本信息。 用数据结构中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序为使用方便,几乎不用特殊的命令,只需按提示输入即可,适合更多的用户使用。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。2.1 存储结构节点结构:存储结构:带头结点和尾结点的单链表front 2.2 关键算法分析本实验从整体上分为七大模块:(1)输入联系人信息;(

2、2)添加联系人信息;(3)查找联系人信息;(4)查看联系人信息;(5)删除联系人信息;(6)修改联系人信息;(7)退出通讯录管理。通讯录系统图2.2.1通讯录的建立伪代码:1.在堆中申请新的结点;2.新节点的数据域为ai;3.将新节点加入到链表中;4.修改尾指针;5.全部结点插入后需要将终结结点的指针域设为空。C+实现:ContactBook:ContactBook(DataType a,int n)/尾插法 front=new Node; rear=new Node; rear=front; /构造空单链表 for(int i=0;idata=ai; /写入数据域 rear-next=s;

3、/将新节点加入到链表中 rear=s; /修改尾指针 rear-next=NULL; /终端节点的指针域设为空时间复杂度:o(n)2.2.2通讯录的插入插入为建立的一种特殊形式,即插入一个单独的结点,方法与上述类似void ContactBook:Add(DataType a)/尾插法 Node * s=new Node; s-data=a; rear=s;o(1)2.2.3按ID查找查找操作是指用户输入要查找的用户的ID,系统该函数内找到该用户,返回用户数据域的指针,在主函数中输出该用户的全部信息。1.初始化工作指针p;2.循环以下操作直到p为空或找到用户1.如果p的数据等于i,则返回P的数

4、据域指针;2.P指针指向下一个节点;3.若找不到返回空指针。/通讯簿按ID查找DataType * ContactBook:Get(int i) Node * p=front-next; while(p) if(p-data.ID=i)return &(p-data); /根据ID找到被查元素,返回位置 p=p- return NULL; /若找不到 ,返回空指针2.2.4通讯录的删除删除操作是指根据用户输入要删除用户的ID,找到该用户结点,返回该用户的数据域,删除此节点1.从第一个节点开始,查找到要删用户的的前一个用户节点,设P指向该节点;2.设q指向要删除的用户:q=p-next;3.摘链

5、:p-next=q-4.保存q节点的数据域:x=q-data;5. 释放q节点:deleteq;要指出的是若在整个通讯录找不到该ID,直接跳过删除步骤,输出查无此人DataType ContactBook:Delete(int i) Node * p=front; while(p-next)next-data.ID=i)break; /找到要删除的用户,跳出循环 Node * q=p- /找到该用户 if(q) p- DataType x=q- /记录用户信息 delete q; /删除用户 cout 删除成功!endl; return x; else cout 该用户不存在! 2.2.5通讯

6、录的修改当用户要进行修改用户操作时,会在主函数输入要修改用户的ID,调用查询模块,若用户存在,系统会显示找到的用户信息,然后要求依次输入该用户新的的编号,姓名,性别,手机号,地址,输入这些后,用户信息被修改/通讯簿修改Modify(DataType a,int i) DataType * p=Get(i); /按ID找到要修改的用户 * p=a; /修改用户的个人数据2.2.6通讯录的遍历显示用户选择输出通讯录,系统会依次输出所有用户的信息输出的基本思想是:只要将表头的指针赋给一个指针变量p,然后用p向后扫描,直到表尾,p为空值。/通讯簿遍历PrintList()您的通讯簿信息如下:-data

7、.ID data.namedata.chdata.phonedata.addr;2.2.7通讯录的析构通讯录的析构即为单链表的析构,比较简单/析构函数ContactBook() Node *p=front; while(p) front=p; delete front;(n)2.3 其他3. 程序运行结果主函数流程图:测试截图:1.建立通讯簿2.添加新用户3.查找用户4.删除用户5.查看所有用户6.修改已有用户7.退出通讯簿管理系统4. 总结通过这次的数据结构上机试验,让我回顾了有关线性表这一章的知识,学会使用线性表解决实际问题,让我有了更深的认识和了解,能灵活的使用,同时也发现了自己的不足,

8、有些地方理解还不够深刻,出现了不少问题调试时问题主要出在内存错误上,有时指针悬挂,有时尾指针指向错误,这些都需要一步步耐心的调试才能发现,以后编程我会注意改正这些依照实验要求,在不同操作时加入了异常处理,比如要查找,删除,修改用户时,如果输入的ID不存在,系统会报错并终止操作,提高了系统的操作性这次设计的通讯簿管理系统还有些可以改进的地方,比如加入文件流后可以将每次输入的信息保存在后台的一个文件里,每次使用时读取这个文件内的信息,实现了保存每次更新的数据。我对于文件流的使用还不是很熟悉,所以没来及加入这项功能;还有在查询这一块,只实现了按编号查询,还未加入按姓名查找。附:所有源程序#inclu

9、deusing namespace std;/个人数据结构体struct DataType int ID; /用户ID; char name10; char ch; char phone13; /手机号码 char addr31;/用户结点struct Node DataType data; struct Node * next;/通讯簿类声明class ContactBookpublic: ContactBook()front=new Node;rear=new Node;front-rear=front; ContactBook(DataType a,int n); /建立 Contact

10、Book(); /析构 void Add(DataType a); /添加 DataType * Get(int i); /查找 DataType Delete(int i); /删除 void Modify(DataType a,int i); /修改 void PrintList(); /遍历private: Node * front; /头结点 Node * rear; /尾结点/通讯簿的建立/通讯簿的添加/通讯簿删除void main() DataType a5=1001,张一,m,188*1881北京, 1002,王二188*1882上海 1003,周三188*1883广州 1004

11、,陈四f188*1884天津 1005,赵五188*1885南京; ContactBook My(a,5); int choose; do 通讯簿管理系统 1.建立我的通讯簿 2.添加通讯簿的成员 3.查找通讯簿的成员 4.删除通讯簿的成员 5.查看我的通讯簿 6.修改通讯簿的成员 0.退出通讯簿管理系统 请 选 择:; cinchoose; switch(choose) case 1:endlx.IDx.namex.chx.phonex.addr; My.Add(x); 新用户添加成功! case 3: int search; 请输入要查找用户的ID:search; if(My.Get(se

12、arch) 查找到的信息如下:My.Get(search)-IDnamechphoneaddr; else coutMy.Get(del)- 确定删除该用户?(y/n): char IsDel;IsDel; if(IsDel=y) My.Delete(del); 取消删除! 用户不存在! case 5: My.PrintList(); case 6: int mod; 请输入要修改用户的ID:mod; if(My.Get(mod) DataType x;请输入修改后的ID、姓名、性别(m/f)、手机号、住址 My.Modify(x,mod); 修改成功! case 0: 退出成功! default: 输入有误! ;while(choose!=0);实验报告总字数要求不少于1000字。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1