C语言学习之用链表实现通讯录

本程序主要功能是对联系人信息进行,添加、删除、查找、插入、显示功能

说明:调用的链表操作接口请参考:http://blog.csdn.net/qlx846852708/article/details/43482497

这里面有我实现的链表操作的接口的详细实现过程,并进行过测试的哦!!!

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "addressBookList.h"

/* 显示链表所有信息*/

void chainlist_all(chainListType *head)

{

chainListType *phead;

DATATYPE_T data;

phead = head;

while(phead)

{

data = phead->data;

printf("name:%s,address:%s,telephone:%s\n",data.key,data.add,data.telephone);

phead = phead->next;

}

return;

}

/*添加联系人*/

chainListType *add_contact(chainListType *head)

{

DATATYPE_T  contactInfo;

printf("please input contact information\n");

scanf("%s %s %s",contactInfo.key,contactInfo.add,contactInfo.telephone);

return chainlist_add_end(head,contactInfo);

}

/*按照关键字查找联系人*/

int find_contact(chainListType *head)

{

char key[15];

chainListType *node = NULL;

printf("please input find key\n");

scanf("%s",key);

node = chainlist_find(head,key);

if(node!=NULL)

{

printf("find info name:%s,address:%s,telephone:%s\n",node->data.key,node->data.add,node->data.telephone);

}

else

{

printf("the key can‘t find!!!\n");

}

return 0;

}

/*按照关键字删除联系人*/

chainListType *delete_contact(chainListType *head)

{

char key[15];

chainListType *phead = NULL;

printf("please input delete key\n");

scanf("%s",key);

phead = chainlist_delete(head,key);

if(phead == NULL)

{

printf("delete after the list is NULL!!!\n");

return NULL;

}

return phead;

}

/*插入联系人信息*/

chainListType *insert_contact(chainListType *head)

{

char key[15];

DATATYPE_T insertData;

chainListType *phead = NULL;

printf("please input insert key\n");

scanf("%s",key);

printf("please input insert contact information\n");

scanf("%s %s %s",insertData.key,insertData.add,insertData.telephone);

phead = chainlist_insert(head,key,insertData);

return phead;

}

/*显示所有联系人信息*/

int show_contact(chainListType *head)

{

if(head==NULL)

{

printf("the list is NULL\n");

return -1;

}

chainlist_all(head);

return 0;

}

int menu()

{

printf("********************\n");

printf("1.add a contact\n");

printf("2.find a contact\n");

printf("3.delete a contact\n");

printf("4.insert a contact\n");

printf("5.show a contact\n");

printf("0.quit ");

printf("\n");

printf("********************\n");

}

int main()

{

int opt = 0;

chainListType *head=NULL;

do

{

printf("\n");

printf("please select option!\n");

menu();

scanf("%d",&opt);

printf("you select for %d\n",opt);

switch(opt)

{

case 1:

head = add_contact(head);

break;

case 2:

find_contact(head);

break;

case 3:

head = delete_contact(head);

break;

case 4:

head = insert_contact(head);

break;

case 5:

show_contact(head);

break;

case 0:

return 0;

default:

printf("unknow select\n");

break;

}

}while(opt!=0);

return 0;

}



时间: 2024-08-04 17:47:41

C语言学习之用链表实现通讯录的相关文章

C语言学习016:单链表

1 #include <stdio.h> 2 3 //定义一个链表,链表是一种递归结构,在定义的时候必须要给结构起一个名字 4 typedef struct folder{ 5 int level; 6 char* filename; 7 struct folder* child;//通过指针链接下一个结构 8 }folder; 9 10 int main(){ 11 folder first={1,"first",NULL}; 12 folder second={2,&q

C语言学习之单向链表操作

该文件为单向链表操作的一些接口:(如发现有错误的地方,及时告知,不胜感激!) list.h #ifndef  _CHAINLIST_H_ #define  _CHAINLIST_H_ typedef struct { char key[15]; char name[20]; int age; }DATATYPE_T; typedef struct Node { DATATYPE_T  data; struct Node *next; }chainListType; /* 添加节点到链表末尾 */

学习C/C++语言:结构体,动态链表

//*************************************************************** //结构体:简单的静态链表 #include<stdio.h> #include<string.h> #define NULL 0 #define SIZE 10 struct student { char num[SIZE]; float score; struct student *next; }; void main() { struct stu

【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)

原文网址:http://bbs.elecfans.com/jishu_354666_1_1.html 再过1个月又是一年应届毕业生应聘的高峰期了,为了方便应届毕业生应聘,笔者将大学四年C语言知识及去年本人C语言笔试难点进行梳理,希望能对今年应届毕业生的应聘有所帮助. 2013年10月18日更新-->    攻破C语言这个帖子更新到这里,我不仅仅是为了补充大学学生遗漏的知识,我更重要的是希望通过我的经验,你们实际项目中的C语言写得漂亮,写出属于你的风格.“朱兆祺STM32手记”(http://bb

C语言学习书籍推荐《C Primer Plus(中文版)(第5版)》下载

普拉塔 (Prata S.) (作者), 云巅工作室 (译者) <C Primer Plus(中文版)(第5版)>共17章,介绍了C语言的基础知识,包括数据类型.格式化输入输出.运算符.表达式.流程控制语句.函数.数组和指针.字符串操作.内存管理.位操作等,知识内容都针对C99标准:另外,<C Primer Plus(中文版)(第5版)>强化了对指针的讨论,并引入了动态内存分配的概念,也讨论了C预处理器和C库函数.高级数据表示(数据结构)方面的内容. 下载地址:点我 编辑推荐 作为

4-20 这是一次失败的小项目 (单链表应用--通讯录)

昨天和今天一直在磕这个小项目,由于近来学习了单链表的相关知识,所以想趁周末做一个通讯录的小项目,主要功能就是增,删,插入. 但是意外重重 在做这个小项目的过程中有几点深入的体会: 应该深入学习一下软件工程,了解软件是如何设计的,因为在写完功能之后再写主界面时,感觉十分混乱.没有办法画一个清晰的逻辑框图,也可能是原来的项目都是有人设计好,第一次自己去设计,要多加练习: 深入学习一下c语言标准库,从而对系统定义的函数有更好的操作性: 先上一下这个失败的代码吧 1 #include<stdio.h>

大一上学期C语言学习心得总结

经过一个学期的C语言学习,大体算是在这个编程语言上入了门,能够通过一些代码解决特定的问题.当然,每次成功将问题转换成代码都小有激动,虽然只是在黑框上输出了一些数字或是字符串. 编程,虽然还不是很懂,但总感觉不只是学习知识这么简单,更多给我的感受是它在潜移默化中培养了人的一种能力,用自己的话来讲就是一种”代码能力“.对于同一个问题,让大家去解开答案,可能经过一些纸笔的运算都能得出结果,但是如何把这个问题转化成代码,这就是一种能力,而仅仅是将问题转换成代码,这是较为浅层次的能力,更深层的便是通过优化

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

go语言学习(五)——面向对象编程

主要讲的是"类"和接口&和其他传统语言不一样的地方挺多的,断断续续看了好几天 下面是我的练习代码 // GoStudy0219 project main.go /* go语言学习--面向对象编程(1) go中类型的值语义和引用语义 结构体(类)的定义和初始化 */ package main import ( "fmt" ) func main() { //几种"类"的初始化 v1 := &character{"Tom&q