首先按照题目要求建立一个struct类型并在题目种加一个尾指针next;
在主函数建立一个头指针,并在while(1)循环调用菜单中调用菜单函数并用witch函数调用函数中的各个功能。
在功能一录入联系人的信息中,用尾插法建立一个动态链表;
动态链表能够更好的利用内存,避免静态链表内存的不足和内存的浪费。
在功能二修改联系人信息功能中,生命一个person类型的指针p。输入需要修改联系人的名字,从头逐个与各个联系人的名字对比,当发现与之相同的联系人时,从新输入该联系人的各个信息,若没有发现,则输出“不存在联系人。
在删除函数中同样定义两个perosn类型的指针p1,p2,定义一个字符串,输入需要删除的联系人名字,从头逐一对比,发现相同的名字的联系人,则讲该联系人上一个联系人中的尾指针指向该联系的下一个联系人的地址,在动态链表中跳过该联系人。
在查找联系人功能中,利用联系人的城市来查找相同城市的联系人。在源代码开头定义一个变量J,
在每次找到符合要求的联系人时j++;在while循环结束时判断J是否为0;若为0,则输出不存在。
在功能显示中,当p不为空时输出该联系人的各个信息,在前面调用排序函数。
该排序是依据电话号码的大小来排序,在发现上一个联系人的电话号码大于下一个时候调用该函数。函数的定义与冒泡相似。
在上功能中都利用到了文件的知识点。对输入,改动,删除都有调用这两个函数中的某个,对数据进行存储和读取。