用顺序表做一个电话簿

先看看结构体定义

#define MAXSIZE 50   //表最大容量

//定义联系人信息 备注,电话,年龄,该声明要在顺序表结构体之前声明
typedef struct person
{
	char remark[20];
	char telephone[20];
	int age;
};

//定义顺序表结构体
typedef struct 
{
	struct person data[MAXSIZE]; //顺序表元素为结构体元素
	int last; 					 //表尾指针
}seqlist;
seqlist *L;                     //定义一个全局变量表

我们会构建的函数

void menu();    	//菜单
void KeyDown();		//按键功能
seqlist *create_list(void);             //创建顺序表
void clear_list(seqlist *L);			//释放顺序表
int is_empty_list(seqlist *L);			//判断表是否为空
int is_full_list(seqlist *L);			//判断表是否为满
int get_list_len(seqlist *L);			//获取表的长度
void insert_list(seqlist *L,int pos,struct person datax); //在表中pos位置插入数据
void show_list(seqlist *L);								  //显示表中的内容
void deleta_list(seqlist *L,struct person datax);		  //删除表中pos的数据
int searchName_list(seqlist *L,struct person datax);	  //查询表中元素的位置
void change_list(seqlist *L,struct person datax);		  //更改某个元素的信息,这里我用的是名字查询。读者可以在函数体中自行修改
void quick_sort(seqlist *L,int begin,int end);			  //按照联系人的年龄进行排序
void saveToFile(seqlist *L,const char *fileName);		  //保存表到文件
void readFromFile(seqlist *L,const char *fileName);		  //从文件中读取表

1.菜单

//这个直接在网上找一个美观的就行了
void menu()
{
    printf("********************************************************\n");
    printf("****************         通讯录         ****************\n");
    printf("********************************************************\n");
    printf("********         1.添加          2.删除         ********\n");
    printf("********         3.查找          4.修改         ********\n");
    printf("********         5.显示          6.清空         ********\n");
    printf("********         7.排序          0.退出         ********\n");
    printf("********************************************************\n");
}

2.按键功能

void KeyDown()
{
	int key_value=0;
	int len = get_list_len(L);
	struct person temp;
	scanf("%d",&key_value);

	switch(key_value)
	{
		case 0:
				exit(0);  //结束进程
		case 1:
			puts("请输入要添加的联系人信息中间以空格分开(name telephone age):\n");
			scanf("%s %s %d",temp.remark,temp.telephone,&temp.age);
			insert_list(L,0,temp);
			saveToFile(L,"person.txt");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值