数据结构顺序表电话通讯录.docx

上传人:b****8 文档编号:9430513 上传时间:2023-02-04 格式:DOCX 页数:8 大小:15.85KB
下载 相关 举报
数据结构顺序表电话通讯录.docx_第1页
第1页 / 共8页
数据结构顺序表电话通讯录.docx_第2页
第2页 / 共8页
数据结构顺序表电话通讯录.docx_第3页
第3页 / 共8页
数据结构顺序表电话通讯录.docx_第4页
第4页 / 共8页
数据结构顺序表电话通讯录.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

数据结构顺序表电话通讯录.docx

《数据结构顺序表电话通讯录.docx》由会员分享,可在线阅读,更多相关《数据结构顺序表电话通讯录.docx(8页珍藏版)》请在冰豆网上搜索。

数据结构顺序表电话通讯录.docx

数据结构顺序表电话通讯录

数据结构用顺序表实现的电话通讯录(C语言)

#include

#include

#include

#include

#defineFALSE0

#defineERROR0

#defineOK1

#defineINFEASIBLE-1

#defineLIST_INIT_SIZE10

#defineLIST_INCREMENT5

#defineN5

typedefintStatus;

typedefstruct

{charname[10];//姓名

charnum[15];//号码

}student;

typedefstruct

{

student*elem;//存储空间基址

intlength;//当前长度

intlistsize;//当前分配的存储空间(以sizeof(student)为单位)

}Sqlist;

SqlistL;//定义全局变量L为Sqllist类型

StatusListInsert(Sqlist&L,inti,studente)

{

//插入学生信息到顺序表L中

intj;

student*newbase;

if(i<1||i>L.length+1)returnERROR;//i值不合法

if(L.length>=L.listsize)//当前存储空间已满,增加分配

{

newbase=(student*)realloc(L.elem,(LIST_INIT_SIZE+LIST_INCREMENT)*(sizeof(student)));

if(!

newbase)//存储分配失败

exit(OVERFLOW);

L.elem=newbase;//新基址

L.listsize+=LIST_INCREMENT;//增加存储容量

}

for(j=L.length;j>=i;j--)

L.elem[j]=L.elem[j-1];//插入位置及之后元素的右移

L.elem[i-1]=e;

L.length++;

returnOK;

}

voidInitList(Sqlist&L)

{

//创建顺序表

L.elem=(student*)malloc(LIST_INIT_SIZE*sizeof(student));

if(!

L.elem)exit(OVERFLOW);//存储分配失败

L.length=0;//空表长度

L.listsize=LIST_INIT_SIZE;//初始存储容量

}

voidListTraverse(SqlistL,void(*vi)(student&))

{

//显示顺序表中的所有记录

system("cls");

printf("姓名电话号码\n");

student*p;

inti;

p=L.elem;

for(i=1;i

vi(*p++);

printf("输入0:

返回菜单请输入您的选择:

");

}

voidprint(student&a)

{

//信息输出

printf("%-10s%-8s",a.name,a.num);

printf("\n");

}

intListLength(SqlistL)//返回顺序表的长度

{returnL.length;}

intLocateElem(SqlistL,studente,Status(*compare)(student,student))

{

//返回L中第一个与e满足关系compare的数据的位序,

//若这样的数据不存在,则返回为0;

inti=1;//i的初值为第1个元素的位序

student*p=L.elem;//p的初值为第1个元素的存储位置

while(i<=L.length&&!

compare(*p++,e))i++;

if(i<=L.length)

returni;

else

returnERROR;

}

StatusListDelete(Sqlist&L,inti,student&e)

{

//在顺序表L中删除第i个元素,并返回OK

system("cls");//清除屏幕

intj;

if(i<1||i>L.length)//i值不合法

returnERROR;

else

{

e=L.elem[i-1];//p为删除元素的位置

for(j=i;j<=L.length;j++)L.elem[j-1]=L.elem[j];

L.length--;

returnOK;

}

}

voidwrong()

{

//错误提示信息输出

printf("youhaveinputedawrongnumber");

printf("pleaseinputthenumberthatisbetween0and8");

}

voidDelete(Sqlist&L)

{

//根据i删除顺序表中的记录

studente;

intj;

printf("请输入要删除的位置(1≦i≦%d):

",L.length+1);

scanf("%d",&j);

ListDelete(L,j,e);

printf("已删除!

");

printf("输入0:

返回菜单请输入您的选择:

");

}

voidScanIn(Sqlist&L)

{

//信息输入

system("cls");

inti;

studente;

chara[2];

printf("请输入信息:

\n");

do

{

student*p=L.elem;

printf("请输入姓名:

");

scanf("%s",e.name);

printf("请输入电话号码:

");

scanf("%s",e.num);

printf("请输入你要插入的位置(1≦i≦%d):

",L.length+1);

scanf("%d",&i);

ListInsert(L,i,e);

jump:

printf("是否继续输入信息(y/n)");

scanf("%s",a);

}while(strcmp(a,"y")==0||strcmp(a,"Y")==0);

printf("输入0:

返回菜单请输入您的选择:

");

}

studentstu[N]={

{"小易",""},

{"小二",""},

{"小伞",""},

{"小斯",""},

{"小武",""}};

intstuIntsertList(Sqlist&L)

{

//将结构体数组stu中的记录插入到顺序表

inti,j;

for(i=0;i

j=ListInsert(L,i+1,stu[i]);

system("cls");

if(j)printf("已成功加入到顺序表中\n");

printf("输入0:

返回菜单请输入您的选择:

");

returnOK;

}

voidmenu()

{

//菜单函数

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

printf("\t\t*1.导入记录*\n");

printf("\t\t*2.输入记录*\n");

printf("\t\t*3.删除记录*\n");

printf("\t\t*4.显示所有记录*\n");

printf("\t\t*0.返回本菜单*\n");

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

}

//开始函数

voidstart()

{

printf("\n");

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

printf("\t\t\t*欢迎使用*\n");

printf("\t\t\t*电话查询系统*\n");

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

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

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

printf("\n");

menu();

}

intmain()

{

inti=0,j;

studente;

Sqlistp,q;

InitList(L);

start();

while(scanf("%d",&i))

{

switch(i)

{

case1:

stuIntsertList(L);break;

case2:

ScanIn(L);break;

case3:

Delete(L);break;

case4:

ListTraverse(L,print);break;

case0:

menu();break;

default:

wrong();

}

}

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1