数据结构算法思想:使用线性表实现一个通讯录

文章介绍了如何使用C++定义和实现一个通讯录数据结构,包括Contact结构体、AddressBook类及其功能方法如插入和删除元素,以及在主函数中使用这些方法的操作。
摘要由CSDN通过智能技术生成

使用线性表实现一个通讯录,通讯录内容有:学号、姓名、电话号码。使其完成以下功能。
(1) 建立一个通讯录
(2) 插入一个数据元素
(3) 删除一个元素,返回其值
(4) 结束程序
请写出基本的算法思想。

一,定义一个通讯录的数据结构

struct Contact {
    int id;           // 学号
    std::string name; // 姓名
    std::string phone; // 电话号码
};

二,定义一个通讯录(使用数组)

class AddressBook {
private:
    Contact contacts[MAX_SIZE]; // 假设通讯录的最大容量为 MAX_SIZE
    int size;                   // 当前通讯录中的联系人数量

public:
    AddressBook() : size(0) {}

    // 其他功能方法...
};

三,实现功能方法

  1. 建立一个通讯录:初始化;
  2. 插入一个数据元素,需要检查通讯录是否已满(即size是否等于MAX_SIZE);
  3. 删除一个元素,返回其值,找到要删的元素,将所有元素前移一位以覆盖要删除的元素。
  4. 结束程序。
bool AddressBook::insert(const Contact& contact) {
    if (size >= MAX_SIZE) {
        return false; // 通讯录已满,插入失败
    }
    contacts[size] = contact;
    size++;
    return true; // 插入成功
}

bool AddressBook::remove(int id, Contact& removedContact) {
    for (int i = 0; i < size; i++) {
        if (contacts[i].id == id) {
            removedContact = contacts[i]; // 保存被删除的元素
            for (int j = i; j < size - 1; j++) {
                contacts[j] = contacts[j + 1]; // 将后面的元素向前移动
            }
            size--; // 减少通讯录中的联系人数量
            return true; // 删除成功
        }
    }
    return false; // 未找到要删除的元素,删除失败
}

 四,主函数

在主函数中创建对象,使用上述功能。

int main() {
    AddressBook addressBook;

    // 插入一些联系人信息...
    Contact contact1 = {1, "张三", "123456789"};
    addressBook.insert(contact1);
    // 插入其他联系人信息...

    // 删除一个联系人并获取其信息...
    Contact removedContact;
    if (addressBook.remove(1, removedContact)) {
        std::cout << "已删除联系人: " << removedContact.name << std::endl;
    } else {
        std::cout << "未找到要删除的联系人" << std::endl;
    }

    // ...其他操作...

    return 0; // 程序结束
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值