赞
踩
- #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){ //boolean
- int 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;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。