用c++写一个动态的电话本
时间: 2024-06-11 10:10:42 浏览: 23
抱歉,我是AI语言模型,无法提供编程环境。以下是一个C语言实现的动态电话簿的示例代码,供您参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
#define MAX_PHONE_LENGTH 20
// 定义联系人结构体
typedef struct {
char name[MAX_NAME_LENGTH];
char phone[MAX_PHONE_LENGTH];
} Contact;
// 定义动态数组结构体
typedef struct {
Contact* data;
int size;
int capacity;
} DynamicArray;
// 初始化动态数组
void initArray(DynamicArray* array, int initialCapacity) {
array->data = (Contact*)malloc(initialCapacity * sizeof(Contact));
array->size = 0;
array->capacity = initialCapacity;
}
// 扩容动态数组
void resizeArray(DynamicArray* array, int newCapacity) {
Contact* newData = (Contact*)malloc(newCapacity * sizeof(Contact));
memcpy(newData, array->data, array->size * sizeof(Contact));
free(array->data);
array->data = newData;
array->capacity = newCapacity;
}
// 添加联系人
void addContact(DynamicArray* array, Contact contact) {
if (array->size == array->capacity) {
resizeArray(array, array->capacity * 2);
}
array->data[array->size++] = contact;
}
// 根据姓名查找联系人
Contact* findContactByName(DynamicArray* array, const char* name) {
for (int i = 0; i < array->size; i++) {
if (strcmp(array->data[i].name, name) == 0) {
return &array->data[i];
}
}
return NULL;
}
// 根据电话号码查找联系人
Contact* findContactByPhone(DynamicArray* array, const char* phone) {
for (int i = 0; i < array->size; i++) {
if (strcmp(array->data[i].phone, phone) == 0) {
return &array->data[i];
}
}
return NULL;
}
// 打印联系人信息
void printContact(Contact* contact) {
printf("%s\t%s\n", contact->name, contact->phone);
}
// 打印所有联系人信息
void printAllContacts(DynamicArray* array) {
printf("Name\tPhone\n");
for (int i = 0; i < array->size; i++) {
printContact(&array->data[i]);
}
}
int main() {
DynamicArray contacts;
initArray(&contacts, 10);
// 添加联系人
Contact alice = {"Alice", "12345678"};
addContact(&contacts, alice);
Contact bob = {"Bob", "23456789"};
addContact(&contacts, bob);
Contact charlie = {"Charlie", "34567890"};
addContact(&contacts, charlie);
// 根据姓名查找联系人
Contact* foundContact = findContactByName(&contacts, "Bob");
if (foundContact != NULL) {
printf("Found contact: ");
printContact(foundContact);
} else {
printf("Contact not found!\n");
}
// 根据电话号码查找联系人
foundContact = findContactByPhone(&contacts, "34567890");
if (foundContact != NULL) {
printf("Found contact: ");
printContact(foundContact);
} else {
printf("Contact not found!\n");
}
// 打印所有联系人信息
printf("All contacts:\n");
printAllContacts(&contacts);
return 0;
}