C++链表操作:增删改查实现

5星 · 超过95%的资源 需积分: 45 7 下载量 175 浏览量 更新于2024-08-05 收藏 2KB TXT 举报
"C++ 实现链表的基本操作:增、删、改、查" 在C++编程中,链表是一种常见的数据结构,用于存储动态集合。本资源介绍如何使用C++来实现链表,并提供了增、删、改、查这四个基本操作的函数定义。以下是对这些操作的详细说明: 首先,我们定义一个名为`Node`的结构体,它代表链表中的一个节点。每个节点包含三个成员:`id`(整型,用于唯一标识节点)、`salary`(双精度浮点型,表示薪资)和`name`(字符串,表示姓名)。此外,还有一个指针`next`,用于指向链表中的下一个节点。 ```cpp class Node { public: int id; double salary; string name; Node* next; }; ``` 接下来,我们定义一个名为`List`的类,它包含了对链表进行操作的方法。类的构造函数初始化头节点`head`为`NULL`,表明链表为空。析构函数用于在对象生命周期结束时释放内存。 ```cpp class List { public: List() { head = NULL; } ~List() {} bool IsEmpty(); Node* InsertNode(int id, string name, double salary); int FindNode(int id, string name, double salary); void DeleteHead(); void DisplayList(); private: Node* head; }; ``` 1. `IsEmpty()`方法检查链表是否为空,通过比较`head`是否为`NULL`来实现。 2. `InsertNode()`方法用于向链表中插入新节点。它根据给定的`id`、`name`和`salary`创建一个新的节点,并将其插入到适当的位置(按照`id`的升序排列)。如果链表为空,新节点将成为头节点;否则,会在找到合适位置后插入。 3. `FindNode()`方法查找链表中具有特定`id`、`name`和`salary`的节点。遍历链表,当找到匹配的节点时返回其索引,否则返回-1表示未找到。 4. `DeleteHead()`方法删除链表的第一个节点(头节点)。由于链表头部的删除较为简单,只需将`head`指向其后的节点即可。 5. `DisplayList()`方法用于打印链表的所有节点,便于调试和查看链表内容。 以下是部分函数的实现细节: ```cpp // InsertNode 的实现 Node* List::InsertNode(int id, string name, double salary) { Node* one = new Node; one->next = NULL; one->id = id; one->name = name; one->salary = salary; if (head == NULL) { head = one; } else { Node* p = head; while (p->next && p->next->id > id) { p = p->next; } one->next = p->next; p->next = one; } return one; } // FindNode 的实现 int List::FindNode(int id, string name, double salary) { Node* p = head; int i = 0; while (p) { if (p->id == id && p->name == name && p->salary == salary) break; p = p->next; i++; } if (p == NULL) return -1; else return i; } // DeleteHead 的实现 void List::DeleteHead() { if (head != NULL) { Node* temp = head; head = head->next; delete temp; } } ``` 以上代码实现了链表的基本功能,可以作为学习C++链表操作的基础。通过这些操作,我们可以方便地管理一个包含员工信息的链表,例如添加新员工、查找特定员工、删除首位员工以及查看整个链表的内容。