前言
昨天我们踏入了数据结构的深山,并且和顺序表battle了一番,虽说最后赢了,但同时也留下了一个问题:如何从顺序表的增删查改加强到通讯录的的增删查改,别急,今天就带你一探究竟。
一.回顾与思考
我们昨天实现了顺序表的头删,头插,尾删尾插,选择插入,选择删除,以及初始化和销毁等功能,我们也知道通讯录其实就是之前的顺序表的plus版本,二者有很强的关联性,于是乎我们今天不打算从头开始写代码,而是在昨天的基础上进行修改和完善。
没看过的宝子建议先去了解一下哦
【数据结构之顺序表的增删查改 - CSDN App】http://t.csdnimg.cn/VK5iU
二.目标展示
🌟 🌟 🌟在开始前,先来看看我们都要干什么吧 🌟 🌟 🌟
功能要求1)⾄少能够存储100个⼈的通讯信息2)能够保存⽤⼾信息:名字、性别、年龄、电话、地址等3)增加联系⼈信息4)删除指定联系⼈5)查找制定联系⼈6)修改指定联系⼈7)显⽰联系⼈信息8)程序结束后,历史通讯录信息不会丢失
三通讯录启动
🌞SL.h
#pragma once
#include"contact.h"
#include<Windows.h>
#define _CRT_SECURE_NO_WARNINGS 1
typedef struct PersonInfo
{
char name[NAME_MAX];
char sex[SEX_MAX];
int age;
char tele[TEL_MAX];
char address[ADDR_MAX];
}SLDataType;
typedef struct SL
{
SLDataType* a;
int size;
int capacity;
}SL;
//typedef contact SL;
//初始化
void SLInit(SL* ps);
//销毁
void SLDestroy(SL* ps);
//打印
void SLPrint(SL* ps);
//扩容
void SLCheckCapacity(SL* ps);
//头部插⼊删除 / 尾部插⼊删除
void SLPushBack(SL* ps, SLDataType x);
void SLPopBack(SL* ps);
void SLPushFront(SL* ps, SLDataType x);
void SLPopFront(SL* ps);
//指定位置之前插⼊/删除数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLDelete(SL* ps, int pos);
🌞contact.h
#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#define NAME_MAX 100
#define SEX_MAX 10
#define TEL_MAX 11
#define ADDR_MAX 100
#include<stdio.h>
#include<string.h>
//前置声明
struct SL;
typedef struct SL contact;
//用户数据//初始化通讯录
void InitContact(contact* con);
//删除通讯录数据
void DelContact(contact* con);
//添加通讯录数据
void AddContact(contact* con);
//展示通讯录数据
void ShowContact(contact* con);
//查找通讯录数据
void FindContact(contact* con);
//修改通讯录数据
void ModifyContact(contact* con);
//销毁通讯录数据
void DestroyContact(contact* con);
🌞SL.h头文件讲解
🐻1.防止头文件被多次包含。
#pragma once
🐻2.把我们需要的头文件包含一下,contact.h中有我们需要的宏,至于windows.h,到后面你就知道了。
#include"contact.h"
#include<Windows.h>
🐻3.vs用户应该都知道这个,为了防止IDE报scanf等函数的错。
#define _CRT_SECURE_NO_WARNINGS 1
🐻4.联系人结构体定义
typedef struct PersonInfo
{
char name[NAME_MAX];
char sex[SEX_MAX];
int age;
char tele[TEL_MAX];
char address[ADDR_MAX];
}SLDataTy