小甲鱼C语言单链表通讯录作业
小甲鱼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语言单链表通讯录作业相关推荐
- C语言 单链表通讯录基础版实现,保证看完都直呼easy
C语言 单链表实现通讯录基础版,保证看完都大呼简单! --------------------------------- 首先在写通讯录之前,必须明确我们的需求: 因为是基础版,我在这里暂时只实现以下 ...
- C语言单链表实现多项式
C语言单链表实现多项式 一.多项式的存储结构 注意:多项式每项的指数必须递增 typedef struct PNode{int coef; //系数int expn; //指数struct PNode ...
- c语言单链表输出26英文字母,C语言单链表的实现
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. 链表结构: SList.h #pragma once typedef int DataType; typedef st ...
- C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?
struct node *sort(struct node *head)/*排序*/ { struct node *p,*q; struct node *temp; for(p=head;p!=NUL ...
- c语言单链表功能,[数据结构]单链表(C语言)的各种功能
06-03阅读200,000 + 链表是一种常见的基本数据结构,在此充分利用了结构指针. 链表可以动态存储和分配,即链表是一个功能非常强大的数组. 他可以在节点中定义多种数据类型,并可以根据需要随意添 ...
- C语言单链表,能直接运行的代码!
C语言单链表,实现增删改查 不废话 直接上代码,COPY就能运行 #include <stdio.h> #include <stdlib.h> /** *定义数据元素 */ t ...
- C++语言单链表实现荷兰旗问题
C++语言单链表实现荷兰旗问题 一.设备及软件 VC6.0 二.语言 C++ 三.涉及的数据结构与算法 单链表.尾插法 四.问题描述 荷兰旗问题亦称三色旗问题. 这里荷兰旗用0,1,2分别表示三种颜色 ...
- C语言单链表基本操作总结
C语言单链表基本操作 本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...
- C语言单链表代码实现
C语言单链表代码实现 一.头文件.常量以及自定义数据结构 #include<stdio.h> #include<malloc.h> #include<stdlib.h&g ...
- c语言单链表倒置(附原理讲解)
c语言单链表倒置 今天博主,讲一个单链表倒置的例子,事实上 话不多说,我们直接上代码,待会会给大家讲解倒置算法实现原理 #include<stdio.h> #include<stdl ...
最新文章
- 520这天,我突然意识到,她根本配不上我这么聪明的男人
- go标准库的学习-sync互斥
- ASP.NET MVC API 接口验证
- 为什么c相电路在前面_三相电路分析
- 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系
- matlab项目实例教程,matlab简明实例教程.doc
- 10 年前的我 VS 10 年后的我
- 部分添加epel源失败的可以试试直接把mirror站网址写到baseurl里
- linux0.11内核完全注释读书笔记
- freeswitch exporter
- 拍拍贷2019Q1财报:核心用户转化率上升 迎战资本竞争力略显不足
- LimeSDR 中文教程 (九)
- 聚集索引与非聚集索引的区别
- 海康视频android 开发实例,海康设备android播放器SDK
- 逆透视变换(IPM)多种方式及代码总结
- android4.4 fragment,在Activity和多个Fragment之间共享资源
- MFC中CreateCompatibleDC的作用
- 1.12 W10的CMD常用命令,以及CMD装逼操作
- mysql sql stuff函数_mssql 系统函数 字符串函数 stuff 功能简介
- 【Django毕业设计源码】Python考试题库练习系统