#include<stdio.h>
#define maxSize 100
#include<string.h>
#include<malloc.h>
typedef struct studnent{
char sno[10];
char name[10];
char phone[11];
char classs[20];
int age;
}ElemType;
typedef struct{
ElemType *elem;
int length;
}SqList;
//初始化通讯录
void Init_Student(SqList &sqlist){
// sqlist.elem=new ElemType[maxSize];
sqlist.elem=(ElemType *)malloc(sizeof(ElemType));
if(!sqlist.elem){
printf("分配空间失败!");
return;
}
sqlist.length=0;
printf("初始化成功!\n");
printf("*********************************\n");
}
//输入联系人
void inputStudnet(SqList &sqlist,int n){
sqlist.length=n;
printf("请输入你的联系人信息:\n");
int i;
for(i=0;i<n;i++){
scanf("%s%s%s%s%d",&sqlist.elem[i].sno,&sqlist.elem[i].name,&sqlist.elem[i].phone,&sqlist.elem[i].classs,&sqlist.elem[i].age);
}
printf("*********************************\n");
}
//输出联系人
void outStudnet(SqList &sqlist){
printf("当前通讯录信息:\n");
int i;
for(i=0;i<sqlist.length;i++){
printf("%s %s %s %s %d\n",sqlist.elem[i].sno,sqlist.elem[i].name,sqlist.elem[i].phone,sqlist.elem[i].classs,sqlist.elem[i].age);
}
printf("*********************************\n");
}
//插入联系人
void insertStudent(SqList &sqlist){
printf("请输入新增联系人信息:\n");
sqlist.length+=1;
scanf("%s%s%s%s%d",&sqlist.elem[sqlist.length-1].sno,&sqlist.elem[sqlist.length-1].name,&sqlist.elem[sqlist.length-1].phone,&sqlist.elem[sqlist.length-1].classs,&sqlist.elem[sqlist.length-1].age);
}
//删除联系人
void deleteStudent(SqList &sqlist,char sno[]){
int i,j;
for(i=0;i<sqlist.length;i++){
if(strcmp(sno,sqlist.elem[i].sno)==0){
printf("%d",i);
for(j=i;j<sqlist.length;j++){
sqlist.elem[j]=sqlist.elem[j+1];
}
sqlist.length-=1;
break;
}
}
}
//取值
void getElem(SqList &sqlist,int i){
if(i<1||i>sqlist.length) printf("查找失败\n");
else printf("%s %s %s %s %d\n",sqlist.elem[i-1].sno,sqlist.elem[i-1].name,sqlist.elem[i-1].phone,sqlist.elem[i-1].classs,sqlist.elem[i-1].age);
}
//查找
void getindexElem(SqList &sqlist,char sno[]){
int i,j;
for(i=0;i<sqlist.length;i++){
if(strcmp(sno,sqlist.elem[i].sno)==0){
printf("%s %s %s %s %d\n",sqlist.elem[i].sno,sqlist.elem[i].name,sqlist.elem[i].phone,sqlist.elem[i].classs,sqlist.elem[i].age);
return;
}
}
printf("查找失败");
}
int main(){
SqList sqlist;
int end=1;
int num;
while(end){
printf("请输入你要选择的操作:\n");
printf("1-------初始化通讯录\n");
printf("2-------输入联系人信息\n");
printf("3-------输出通讯录列表\n");
printf("4-------插入联系人\n");
printf("5-------删除联系人\n");
printf("6-------取值\n");
printf("7-------查找\n");
printf("0-------退出操作\n");
scanf("%d",&num);
switch(num){
case 1:Init_Student(sqlist);break;
case 2:inputStudnet(sqlist,2);;break;
case 3:outStudnet(sqlist);break;
case 4:insertStudent(sqlist);break;
case 5:
printf("请输入你要删除的联系人的编号:\n");
char sno[10];
scanf("%s",sno);
deleteStudent(sqlist,sno);break;
case 6:
int i;
printf("请输入你要查找的位置:\n");
scanf("%d",&i);
getElem(sqlist,i);
break;
case 7:
char so[10];
printf("请输入你要查找联系人的编号:\n");
scanf("%s",so);
getindexElem(sqlist,so);
break;
case 0:end=0;printf("您已停止操作!");break;
}
}
return 0;
}
C语言数据结构-基于单链表实现通讯录
2024-03-20 16:16:02 43 阅读