小甲鱼C语言单链表通讯录作业
写完之后并没有找到答案,调试了几次并没有出现错误,可以给没有写出来的朋友参考参考,如果代码有什么错误,或者不足欢迎指出,一起进步。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct person
{char name[20];char phonenumber[13];struct person *next;
}
getInput(struct person *person)//为新struct赋值
{fflush(stdout);printf("请输入联系人姓名:"); scanf("%s",person->name);printf("请输入联系人电话:");fflush(stdout);scanf("%s",person->phonenumber);
}
addPerson(struct person **head)//添加新的联系人
{struct person *person,*temp;person=(struct person *)malloc(sizeof(struct person));if(person==NULL){printf("内存分配失败!");exit(1);}getInput(person);if(*head==NULL){*head=person;person->next=NULL;}else{temp=*head;*head=person;person->next=temp;}
}
struct person *findPerson(struct person *head,char name[20])//查找已有联系人
{struct person *temp;temp=head;while(strcmp(name,temp->name)!=0){temp=temp->next;if(temp==NULL){break;}}return temp;}
putoutPerson(struct person *temp)//输出指定联系人
{if(temp==NULL){printf("未查询到您输入的姓名\n");}else{printf("姓名:%s\n",temp->name);printf("电话:%s\n",temp->phonenumber);  }
}
changePerson(struct person *head)//更改已有联系人
{char name[20];int pattern=0;struct person *person;printf("请输入你要更改的联系人姓名:");do{scanf("%s",name); person=findPerson(head,name);if(person==NULL){printf("未找到要求修改的联系人,请重新输入:"); }}while(person==NULL);printf("请输入您要更改内容的序号 1.姓名 2.电话\n");LOOP:  scanf("%d",&pattern); if(pattern==1){printf("已选定修改姓名,请输入:"); scanf("%s",person->name);}else if(pattern==2){printf("已选定修改电话,请输入:");scanf("%s",person->phonenumber);}else{printf("更改内容失败,请输入正确序号\n");goto LOOP;}printf("修改成功!\n");
}
delPerson(struct person **head)//删除已有联系人
{char name[20];struct person *temp,*tempbefore;temp=*head;tempbefore=NULL;printf("请输入要删除的联系人姓名:");scanf("%s",name);while(temp!=NULL && strcmp(temp->name,name)!=0){tempbefore=temp;temp=temp->next;}if(temp==NULL){printf("未查询到您输入的姓名");return;}else{if(tempbefore == NULL){*head=temp->next;}else{tempbefore->next=temp->next;}free(temp);}
}
displayContacts(struct person *head)//显示当前联系人
{struct person *temp;temp=head;while(temp!=NULL){printf("\n姓名:%s\n",temp->name);printf("电话:%s\n",temp->phonenumber);temp=temp->next;}
}
release(struct person **head)
{struct person *temp;while(*head!=NULL){temp=*head;*head=(*head)->next;free(temp);}
}
int main(int argc, char *argv[])
{int option=0;struct person *head=NULL;char name[20];while(option!=6){printf("\n1.插入新的联系人  2.查找已有联系人\n");printf("3.更改已有联系人  4.删除已有联系人\n"); printf("5.显示当前通讯录  6.退出通讯录程序\n"); printf("请输入你要进行的操作序号:"); scanf("%d",&option);if(option==6){return;   }else if(option==1){addPerson(&head);}else if(option==5){displayContacts(head);}else if(option==2){printf("请输入要查询的联系人姓名:");scanf("%s",name);putoutPerson(findPerson(head,name));}else if(option==3){changePerson(head);}else if(option==4){delPerson(&head);}}release(head);
}

小甲鱼C语言单链表通讯录作业相关推荐

  1. C语言 单链表通讯录基础版实现,保证看完都直呼easy

    C语言 单链表实现通讯录基础版,保证看完都大呼简单! --------------------------------- 首先在写通讯录之前,必须明确我们的需求: 因为是基础版,我在这里暂时只实现以下 ...

  2. C语言单链表实现多项式

    C语言单链表实现多项式 一.多项式的存储结构 注意:多项式每项的指数必须递增 typedef struct PNode{int coef; //系数int expn; //指数struct PNode ...

  3. c语言单链表输出26英文字母,C语言单链表的实现

    单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. 链表结构: SList.h #pragma once typedef int DataType; typedef st ...

  4. C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?

    struct node *sort(struct node *head)/*排序*/ { struct node *p,*q; struct node *temp; for(p=head;p!=NUL ...

  5. c语言单链表功能,[数据结构]单链表(C语言)的各种功能

    06-03阅读200,000 + 链表是一种常见的基本数据结构,在此充分利用了结构指针. 链表可以动态存储和分配,即链表是一个功能非常强大的数组. 他可以在节点中定义多种数据类型,并可以根据需要随意添 ...

  6. C语言单链表,能直接运行的代码!

    C语言单链表,实现增删改查 不废话 直接上代码,COPY就能运行 #include <stdio.h> #include <stdlib.h> /** *定义数据元素 */ t ...

  7. C++语言单链表实现荷兰旗问题

    C++语言单链表实现荷兰旗问题 一.设备及软件 VC6.0 二.语言 C++ 三.涉及的数据结构与算法 单链表.尾插法 四.问题描述 荷兰旗问题亦称三色旗问题. 这里荷兰旗用0,1,2分别表示三种颜色 ...

  8. C语言单链表基本操作总结

    C语言单链表基本操作     本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...

  9. C语言单链表代码实现

    C语言单链表代码实现 一.头文件.常量以及自定义数据结构 #include<stdio.h> #include<malloc.h> #include<stdlib.h&g ...

  10. c语言单链表倒置(附原理讲解)

    c语言单链表倒置 今天博主,讲一个单链表倒置的例子,事实上 话不多说,我们直接上代码,待会会给大家讲解倒置算法实现原理 #include<stdio.h> #include<stdl ...

最新文章

  1. 520这天,我突然意识到,她根本配不上我这么聪明的男人
  2. go标准库的学习-sync互斥
  3. ASP.NET MVC API 接口验证
  4. 为什么c相电路在前面_三相电路分析
  5. 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系
  6. matlab项目实例教程,matlab简明实例教程.doc
  7. 10 年前的我 VS 10 年后的我
  8. 部分添加epel源失败的可以试试直接把mirror站网址写到baseurl里
  9. linux0.11内核完全注释读书笔记
  10. freeswitch exporter
  11. 拍拍贷2019Q1财报:核心用户转化率上升 迎战资本竞争力略显不足
  12. LimeSDR 中文教程 (九)
  13. 聚集索引与非聚集索引的区别
  14. 海康视频android 开发实例,海康设备android播放器SDK
  15. 逆透视变换(IPM)多种方式及代码总结
  16. android4.4 fragment,在Activity和多个Fragment之间共享资源
  17. MFC中CreateCompatibleDC的作用
  18. 1.12 W10的CMD常用命令,以及CMD装逼操作
  19. mysql sql stuff函数_mssql 系统函数 字符串函数 stuff 功能简介
  20. 【Django毕业设计源码】Python考试题库练习系统

热门文章

  1. MySQL手册chm格式文档
  2. intptr java_[转载]C#中int和IntPtr相互转换
  3. C语言-筛法求100以内素数
  4. java 分页读取数据
  5. oracle查看asm磁盘,OracleOnLinux-Windows下如何查看ASM磁盘对应的设备
  6. 【系统辨识】初识系统辨识,学习这个的目的
  7. L2-026 小字辈 (25 分)
  8. Spring常用注解含义
  9. python查看函数源代码
  10. SPSS16 视频教程 共17章全