代码

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
//#include <stack>
typedef struct {char name[10];char ptel[13];//联系号码 char qq[11];char wtel[13];//办公号码
}ElemType;typedef struct {ElemType date[50];int length;
}SqList; //初始化线性表
void InitList(SqList *&L){L=(SqList *)malloc(sizeof(SqList));  //为线性表分别配空间 L->length=0;
}//输出线性表
void DispList(SqList *L){int i;printf(" NO        MAME       PTEL               QQ              WTEL\n");for(i=0;i<L->length;i++){printf(" %2d%12s%18s%17s%18s\n",i+1,L->date[i].name,L->date[i].ptel,L->date[i].qq,L->date[i].wtel);fflush(stdin);//清空输入缓冲区 } printf("\n");
} //插入数据元素
bool ListInsert(SqList *&L,int i,ElemType e){  //booleanint j;if(e.name=="\0"||i<1||i>L->length+1){printf("插入失败!\n\n");return false;}    i--;//将逻辑序号转化为物理序号for(j=L->length;j>i;j--){L->date[j]=L->date[j-1];  //将元素后移 } L->date[i]=e;L->length++;
//  printf("length=%d\n\n",L->length);return true;
} //删除数据元素
bool ListDelete(SqList *&L,int i,ElemType &e){int j;if(i<1||i>L->length+1){printf("删除失败!\n\n"); return false;        } i--;//将逻辑序号转化为物理序号e=L->date[i];for(j=i;j<L->length;j++){L->date[j]=L->date[j+1];  //将元素前移 } L->length--;printf("删除成功!\n\n");
//  printf("length=%d\n\n",L->length);return true;
} //查询联系人
int LocateElem(SqList *L,ElemType e){int i=0;while(i<L->length&&strcmp(L->date[i].name,e.name)!=0) //strcmp()  比较字符串 ,相等返回0 i++;if(i>L->length){return 0;}else{
//      puts(L->date[i].name);//puts()  向栈顶添加元素(线性表后面)
//      puts(L->date[i].ptel);
//      puts(L->date[i].qq);
//      puts(L->date[i].wtel);printf("name:%s  ptel:%s  qq:%s  wtel:%s\n\n",L->date[i].name,L->date[i].ptel,L->date[i].qq,L->date[i].wtel);return(i+1);}
}//输出联系人数
void CountList(SqList *L){ printf("目前联系人总数:%d\n\n",L->length);
} //摧毁线性表
void DestroyList(SqList *L)
{free(L->date); //使用free函数,释放空间 L->length = 0; printf("销毁成功!\n\n");
}void menu1(){  //打印菜单 printf("        -----------------------------\n");printf("             手机通讯录的应用\n"); printf("        -----------------------------\n");printf("             1.初始化通讯录\n"); printf("             2.增加联系人信息\n"); printf("             3.显示联系人信息\n"); printf("             4.删除联系人信息\n"); printf("             5.查找联系人信息\n"); printf("             6.退出\n");printf("             扩展功能:\n");printf("             7.查询当前联系人人数\n"); printf("             8.销毁通讯录\n"); printf("        -----------------------------\n");
} int main(){SqList *L;int flag=1;int i,j;ElemType s[4]={ "林一","13845467326","123234675","15278538464","林二","12547722234","243624213","12734532894","林三","13254678924","317643927","13423137876","林四","14219834567","244292934","17683273484"};ElemType e; InitList(L);menu1();for(int i=0;i<4;i++){ListInsert(L,i+1,s[i]);} DispList(L);while(flag){printf("请选择:");scanf("%d",&j);switch(j){case 1:InitList(L);printf("初始化成功!\n\n");break; case 2:printf("请以次输入联系人信息:");scanf("%s %s %s %s",e.name,e.ptel,e.qq,e.wtel);printf("请输入插入的位置:");scanf("%d",&i); fflush(stdin);//清空输入缓冲区,确保不影响后面的数据读取if(ListInsert(L,i,e)){printf("插入成功!\n\n");   }break;case 3: DispList(L);break;case 4:printf("请输入删除的联系人位置:");scanf("%d",&i);ListDelete(L,i,e);break;case 5:printf("请输入查询的联系人姓名:");scanf("%s",&e.name);LocateElem(L,e);break;case 6:flag=0;printf("退出成功!\n\n");break;case 7:CountList(L);break;case 8:DestroyList(L); break;default:printf("输入有误!\n\n");break;                        }}return 0;
} 

运行结果

数据结构 顺序表实现手机通讯录相关推荐

  1. 约瑟夫环c语言代码顺序存储,顺序表实现约瑟夫环地问题,C语言.doc

    顺序表实现约瑟夫环地问题,C语言 计算机科学与工程学院 PAGE PAGE 2 <算法与数据结构>试验报告 计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 1 ...

  2. 顺序表讲解和顺序表实现增删查改

    前言 顺序表是一种参见的数据结构 特点:类似数组的储存,需要预先开辟空间已备数据插入.(1)同时顺序表也因此会存在和数组同样的问题(例如:越界)(2)同时因为其类似与数组的结构给二分查找这种算法提供了 ...

  3. 用顺序表实现学生信息管理系统

    用顺序表实现学生信息管理系统 问题描述: 定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息 ...

  4. 顺序表实现学生管理系统

    定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此 ...

  5. 【数据结构】顺序表实现超详解(保姆级教程)

    [数据结构] 目录 ​ 前言 顺序表 接口实现 各项功能 接口详解 顺序表初始化 顺序表释放 顺序表展示 顺序表容量检查 顺序表数据尾插 顺序表数据头插 顺序表数据前删 顺序表数据尾删 顺序表数据查找 ...

  6. 顺序表实现栈相关操作

    1.栈的相关概念     栈是一种特殊的线性表, 其中只允许在固定的一端进行插入和删除元素.进行数据插入和删除的一端叫做栈顶, 另一端成为栈底. 不含任何元素的栈称为空栈, 栈又称为先进先出的线性表. ...

  7. 行逻辑连接的顺序表实现稀疏矩阵乘法

    行逻辑连接顺序表 采用一位三元结构体组记录的每一个元素在矩阵中的具体位置,采用一维数组记录每行第一个非元素的位置,具有记录行数,列数和非元素总个数的结构体成员变量. 算法思想 逐行求积,每次处理一行, ...

  8. 约瑟环c语言,顺序表实现约瑟环的问题,C语言.doc

    计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 10级计算机工程02 试验地点 计算机大楼计工教研室 学生学号 1005080222 指导教师 蔡琼 学生姓名 肖宇博 试 ...

  9. 顺序表实现图书管理系统增删改查

    顺序表学习: 这个程序是用于学习数据结构而参考数据结构C语言第二版的教材实现的一个简易的图书管理系统. 逻辑结构:顺序表 线性表的顺序存储又称作顺序表.由一组地址连续的存储单元依次存储线性表的数据元素 ...

最新文章

  1. java es 5.0.1_es.5.1.1启动失败
  2. atitit.软件开发方法总结O6
  3. 使用oracle和sqlserver的几点区别【转】
  4. 确定不来了解一下什么是 BIO NIO AIO 阻塞 非阻塞 同步 异步?
  5. 用matlab建立控制系统的数学模型,第二章控制系统的数学模型.ppt
  6. HDU 6703 array(主席树 + set)
  7. python举两种字符串引号的例子_python里的单引号和双引号的有什么作用
  8. Qt文档阅读笔记-数据驱动测试
  9. sqlerver 字符串转整型_字符串转换成整型并求和
  10. java socket通讯_Java socket通讯实现过程及问题解决
  11. php的4种常用运行方式
  12. 协同过滤算法_利用数据分析量化协同过滤算法的两大常见难题
  13. 通过vba代码将word转换为PDF
  14. 基于STM32完成FATFS文件系统移植与运用--这是完全免费开源的FAT文件系统
  15. Vimac 0.3.14最新版 (一款让你用键盘代替鼠标软件)
  16. 电脑取消撤销快捷键是什么_删除的快捷键是什么?电脑删除的快捷键在哪?
  17. 一个简单的静态网页制作(html+css)
  18. space-around space-evenly区别
  19. python怎么撤销_用Python玩转微信(三)—— 查看撤回消息
  20. 电脑登陆出现此工作站和主域间的信任关系失败

热门文章

  1. Anaconda------环境管理
  2. 专知原创和整理了一些中英文机器学习从入门到精通的资料,和大家分享一下
  3. 二维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_9】
  4. 好习惯是成功的关键(最经典的成功思维)
  5. 闽江学院c语言期末试卷,Matlab期末复习08_闽江学院:matlab6.5(周赢武)_ppt_大学课件预览_高等教育资讯网...
  6. 计算机大赛指导老师自评怎么写,计算机*学生的简单自我评价
  7. 旧金山犯罪预测与可视化分析
  8. 发布版,浏览器端隐藏代码
  9. Runes - 神符一览
  10. css实现长英文字母自动换行