使用单链表实现电话本一·(1)定义顺定表绩构体· (2)初始化思话杰一 (3)添加联系人 (4)显示所有联系人“ (5)直找联系人一 (6)删除联系人 ·实验结果:一
时间: 2024-09-29 20:04:21 浏览: 21
在使用单链表实现电话本(Contact List)的数据结构时,我们可以按照以下步骤设计:
1. **定义顺序结构体**:
```c++
// 定义Contact结构体
struct Contact {
string name;
string phone_number;
struct Node* next; // 指向下一个节点的指针
};
```
在这里,我们创建了一个名为`Node`的内部结构体,包含姓名(name)、电话号码(phone_number),以及指向下一个`Contact`节点的指针。
2. **初始化链表**:
```c++
// 初始化函数
void initializePhoneBook(Contact** head) {
*head = NULL;
}
```
这个函数接收链表头指针,并将其初始化为NULL,表示链表为空。
3. **添加联系人**:
```c++
// 添加联系人函数
void addContact(Contact** head, string name, string phone_number) {
Contact* newNode = new Contact();
newNode->name = name;
newNode->phone_number = phone_number;
newNode->next = *head;
*head = newNode;
}
```
这个函数创建新的联系人节点并插入到链表头部。
4. **显示所有联系人**:
```c++
// 显示所有联系人函数
void displayContacts(Contact* head) {
if (head == NULL) {
cout << "电话簿为空.\n";
} else {
while (head != NULL) {
cout << "姓名: " << head->name << ", 电话: " << head->phone_number << endl;
head = head->next;
}
}
}
```
遍历链表打印每个联系人的信息。
5. **查找联系人**:
```c++
// 查找联系人函数
Contact* findContact(Contact* head, string name) {
while (head != NULL && head->name != name) {
head = head->next;
}
return head;
}
```
搜索链表找到对应名字的联系人节点。
6. **删除联系人**:
```c++
// 删除联系人函数
void deleteContact(Contact** head, string name) {
Contact* current = *head;
Contact* previous = NULL;
if (current != NULL && current->name == name) {
*head = current->next;
delete current;
return;
}
while (current != NULL && current->name != name) {
previous = current;
current = current->next;
}
if (current != NULL) {
previous->next = current->next;
delete current;
}
}
```
通过遍历链表找到目标节点并删除之。
**实验结果**:
当你按照上述步骤操作电话簿,例如添加、删除和查找联系人后,可以看到实际数据的变化以及链表的操作效果。每次操作都会改变电话簿的状态,如显示当前存储的所有联系人,或者确认某个人是否已被成功添加或删除。