请编程实现手机通讯录管理系统,采用如下的结构体类型定义创建单向链表保存联系人的姓名和电话信息:
- struct friends
- {
- char name[20];
- char phone[12];
- struct friends *next;
- };
然后,采用单向链表编程完成以下功能(在主函数中依次调用这些函数即可):
(1)建立单向链表来存放联系人的信息,如果输入大写‘Y’字符,则继续创建节点存储联系人信息,否则按任意键结束输入。
(2)输出链表中联系人的信息。
(3)查询联系人的信息。
(4)释放链表所占的内存。
wang 1363456
Y
li 34567890
Y
zhang 138964523
N
zhang
wang 1363456
li 34567890
zhang 138964523
该联系人的姓名:zhang 电话:138964523
为了完成本关任务,你需要掌握:
线性结构的链式存储也称为链表,相比于顺序表,链表能够解决顺序表中空间资源浪费问题以及空间不足的问题。链表的每一个结点包含数据域和指针域,而每一个结点在内存中的地址是不连续的,且能适应动态变化。在数据插入和数据删除操作效率比顺序表高,但在数据查找和修改效率较低,需要遍历链表。
链表又分为:
有头链表,头节点不存数据,所以数据操作都从头节点所指的下一节点开始,就不会误操作到头节点。故更加常用。
无头链表,第一个节点就存数据,但数据操作就要判断是否是头节点,不能对头节点操作,特别像删除操作就不能对头节点进行。
创建单向链表存储信息,编写查找节点后的链表代码,最后释放链表所占的内存。