使用单链表实现电话本一·(1)定义顺定表绩构体· (2)初始化思话杰一 (3)添加联系人 (4)显示所有联系人“ (5)直找联系人一 (6)删除联系人(8)主函数 ·实验结果:一
时间: 2024-09-29 20:04:41 浏览: 25
使用单链表实现电话本,可以按照以下步骤进行:
(1)定义结构体:首先,我们需要创建一个结构体表示联系人,它通常包含姓名、电话号码等属性。例如,在C++中,我们可以定义如下:
```cpp
struct Contact {
string name;
string phoneNumber;
struct Node* next; // 指向下一个联系人的指针
};
```
(2)初始化链表:在程序开始时,我们可能会创建一个空链表作为电话本的基础结构,即链表的第一个节点设为NULL。
```cpp
Contact* phoneBook = nullptr;
```
(3)添加联系人:当用户想要添加新联系人时,会创建一个新的`Contact`结构体实例,并将其`next`字段设置为当前链表的头部,然后更新头节点指向新添加的节点。
```cpp
void addContact(string name, string phoneNumber) {
Contact* newNode = new Contact();
newNode->name = name;
newNode->phoneNumber = phoneNumber;
newNode->next = phoneBook;
phoneBook = newNode;
}
```
(4)显示所有联系人:遍历整个链表,打印每个节点的联系信息。
```cpp
void displayAllContacts() {
if (phoneBook == nullptr) {
cout << "电话簿为空" << endl;
} else {
cout << "电话簿:\n";
while (phoneBook != nullptr) {
cout << "姓名:" << phoneBook->name << ", 电话:" << phoneBook->phoneNumber << endl;
phoneBook = phoneBook->next;
}
}
}
```
(5)查找联系人:提供一个函数接受姓名作为输入,遍历链表直到找到匹配项,返回对应节点,如果没有找到则报告未找到。
```cpp
Contact* findContact(string name) {
Contact* current = phoneBook;
while (current != nullptr) {
if (current->name == name) {
return current;
}
current = current->next;
}
return nullptr;
}
```
(6)删除联系人:找到要删除的节点并调整其前驱节点的`next`指针指向该节点的下一个节点,如果删除的是头节点,则将头节点直接设为下一个节点。
```cpp
void deleteContact(string name) {
if (phoneBook == nullptr) {
return;
}
if (phoneBook->name == name) {
Contact* temp = phoneBook;
phoneBook = phoneBook->next;
delete temp;
return;
}
Contact* current = phoneBook;
while (current->next != nullptr && current->next->name != name) {
current = current->next;
}
if (current->next != nullptr) {
current->next = current->next->next;
delete current->next;
}
}
```
(8)主函数:这里应该包括用户界面,接收用户的操作命令(如add, show, find, delete 等),并调用相应的功能处理。
```cpp
int main() {
// 用户操作循环...
return 0;
}
```
实验结果:这个实现可以帮助用户有效地管理电话簿,增删查改等功能都可以通过上述函数完成。但是,实际的实验结果需要你在运行程序并进行测试后才能看到具体的执行效果。