C++链表实现通讯录管理系统攻略
什么是链表?
链表是一种非常常见的数据结构,常被用来存储一系列有序数据。链表中的每个元素都包含一个数据项和一个指针,指针指向下一个元素,这样一系列元素就组成了一个链表。
链表通常被用来处理动态数据结构,例如对于一个链表中的元素,可以通过修改指针来方便地插入或删除元素。
为什么要使用链表?
链表相较于数组更具有适应性,链表无需连续的内存分配,可以更加高效地动态存储数据。链表支持快速插入和删除操作,适用于管理大量数据。
如何利用C++实现链表?
在C++中,链表可以用指针来实现。C++ 中的指针可以作为变量来使用,指向变量在内存中的地址。以此为基础,链表中的每个元素都可以用一个结构体或类来表示,每个结构体或类包含一个数据项和指向下一个元素的指针。通过定义一个指向链表头的指针,可以使用指针来实现链表的插入、删除和遍历等操作。
链表结构体示例:
struct Contact {
char name[20];
char tel[15];
struct Contact* next;
};
如何用链表实现通讯录管理系统?
通讯录管理系统主要是用来存储联系人信息,对于这种动态的数据结构,链表是一个非常好的选择。以下是一个简单的通讯录管理系统的示例代码:
#include <iostream>
#include <cstring>
using namespace std;
struct Contact {
char name[20];
char tel[15];
struct Contact* next;
};
Contact* create_contact(char name[], char tel[]) {
Contact* contact = new Contact;
strcpy(contact->name, name);
strcpy(contact->tel, tel);
contact->next = NULL;
return contact;
}
void add_contact(Contact** contacts, char name[], char tel[]) {
Contact* contact = create_contact(name, tel);
contact->next = *contacts;
*contacts = contact;
}
void delete_contact(Contact** contacts, char name[]) {
Contact* p = *contacts;
Contact* q = NULL;
while(p != NULL) {
if(strcmp(p->name, name) == 0) {
if(q == NULL) {
*contacts = p->next;
} else {
q->next = p->next;
}
delete(p);
return;
}
q = p;
p = p->next;
}
}
void print_contacts(Contact* contacts) {
Contact* p = contacts;
while(p != NULL) {
cout << p->name << "\t" << p->tel << endl;
p = p->next;
}
}
int main() {
Contact* contacts = NULL;
add_contact(&contacts, "Tom", "123456");
add_contact(&contacts, "Jerry", "789");
add_contact(&contacts, "Mike", "24680");
print_contacts(contacts);
delete_contact(&contacts, "Jerry");
print_contacts(contacts);
return 0;
}
示例说明
在上面的示例代码中,我们定义了一个 Contact
结构体,表示一个通讯录联系人,其中 name
字段表示联系人姓名,tel
字段表示联系人电话号码,next
字段表示指向下一个联系人的指针。然后,我们定义了一些函数,如 create_contact()
用于创建一个联系人对象,add_contact()
用于添加一个联系人对象到链表中,delete_contact()
用于删除指定名字的联系人对象,print_contacts()
用于遍历并输出所有联系人对象。最后,我们在 main()
函数中演示了如何使用这些函数来管理通讯录。在示例代码中,我们添加了三个联系人,遍历并输出所有联系人对象,然后删除一个联系人,并再次遍历并输出所有联系人对象。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++链表实现通讯录管理系统 - Python技术站