C语言基于单链表实现通讯录功能
程序员文章站
2022-03-10 17:00:50
本文实例为大家分享了c语言基于单链表实现通讯录功能的具体代码,供大家参考,具体内容如下#include#include#include&l...
本文实例为大家分享了c语言基于单链表实现通讯录功能的具体代码,供大家参考,具体内容如下
#include<stdio.h> #include<stdlib.h> #include<string.h> #pragma warning(disable:4996);//解决vs报严重性代码错误 typedef struct lnode { char name[20]; double ph_number; struct lnode* next; }linknode; //创建通讯录 lnode* createlist(lnode*& l) { lnode* s, * r; int n; l = (lnode*)malloc(sizeof(lnode)); r = l; printf("请输入要创建联系人的个数:"); scanf("%d", &n); printf("\n"); for (int i = 0; i < n; i++) { s = (lnode*)malloc(sizeof(lnode)); printf("请输入第%d个联系人的姓名,电话:\n", i + 1); scanf("%s%lf", &s->name, &s->ph_number); printf("\n"); r->next = s; r = s; } r->next = null; return l; } //添加联系人 void listinsert(lnode*& l) { lnode* new_s, * r = l; while (r->next != null) { r = r->next; } new_s = (lnode*)malloc(sizeof(lnode)); printf("请输入要添加的联系人的姓名,电话:\n"); scanf("%s%lf", &new_s->name, &new_s->ph_number); printf("\n"); r->next = new_s; r = new_s; r->next = null; } //查找联系人 bool locate(lnode*& l) { lnode* p = l->next; char name_[20]; printf("请输入要查找的联系人的姓名:\n"); scanf("%s", &name_); printf("\n"); while (p != null && strcmp(p->name, name_) != 0)//注意判断条件 { p = p->next; } if (p == null) return false; else return true; } //修改联系人 bool modifylist(lnode*& l) { lnode* p = l; char name_[20]; double ph_number_; printf("请输入要修改的联系人的姓名:\n"); scanf("%s", name_); printf("\n"); while (p != null && strcmp(p->name, name_) != 0)//注意判断条件 { p = p->next; } if (p == null) return false; else { printf("请输入修改后的电话号码为:\n"); scanf("%lf", &ph_number_); printf("\n"); p->ph_number = ph_number_; return true; } } //删除联系人 bool listdelete(lnode*& l) { lnode* p = l->next, * q = l; char name_[20]; printf("请输入要删除联系人的姓名:\n"); scanf("%s", name_); printf("\n"); while (p != null && strcmp(p->name, name_) != 0)//注意判断条件 { p = p->next; q = q->next; } if (p == null) return false; else { q->next = q->next->next; free(p); return true; } } //加载通讯录 void displist(lnode* l) { int i = 0; lnode* p = l->next; while (p != null) { printf("姓名:%s 电话:%.0lf\n", p->name, p->ph_number); p = p->next; i++; } } int main() { printf("*****************************************\n"); printf("* *\n"); printf("* 1:添加联系人 *\n"); printf("* *\n"); printf("* 2: 查找联系人 *\n"); printf("* *\n"); printf("* 3: 修改联系人 *\n"); printf("* *\n"); printf("* 4: 删除联系人 *\n"); printf("* *\n"); printf("* 5: 加载通讯录 *\n"); printf("* *\n"); printf("*****************************************\n"); printf("\n"); lnode* l = createlist(l); int operand; printf("\n"); for (int i = 0; i < 5; i++) { printf("请输入您要执行操作的操作数:\n"); scanf("%d", &operand); switch (operand) { case 1: listinsert(l); break; case 2: if (locate(l) == 1) { printf("找到该联系人\n"); printf("\n"); break; } else { printf("未找到改联系人\n"); printf("\n"); break; } case 3: if (modifylist(l) == 1) { printf("修改成功\n"); printf("\n"); break; } else { printf("修改失败\n"); printf("\n"); break; } case 4: if (listdelete(l) == 1) { printf("删除成功\n"); printf("\n"); break; } else { printf("删除失败\n"); printf("\n"); break; } case 5: displist(l); break; default: printf("error!!!\n"); } } return 0; }
运行截图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: three.js学习系列-00
下一篇: Java设计模式常用的七大原则总结