请写出一段代码,要求实现对linkedlist的增删改查功能的完整实现
时间: 2023-08-16 16:07:05 浏览: 72
好的,以下是一个简单的 C++ 代码实现,实现了对链表的增删改查功能:
```cpp
#include <iostream>
using namespace std;
// 链表节点的定义
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 链表的类定义
class LinkedList {
public:
// 构造函数,初始化链表为空
LinkedList() {
head = NULL;
}
// 在链表尾部插入一个节点
void insert(int val) {
ListNode* newNode = new ListNode(val);
if (head == NULL) {
head = newNode;
} else {
ListNode* cur = head;
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode;
}
}
// 删除指定位置上的节点
bool remove(int index) {
if (index < 0) {
return false;
}
if (index == 0) {
ListNode* tmp = head;
head = head->next;
delete tmp;
return true;
}
ListNode* cur = head;
for (int i = 0; i < index - 1; i++) {
if (cur->next == NULL) {
return false;
}
cur = cur->next;
}
ListNode* tmp = cur->next;
if (tmp == NULL) {
return false;
}
cur->next = tmp->next;
delete tmp;
return true;
}
// 修改指定位置上节点的值
bool update(int index, int val) {
ListNode* cur = head;
for (int i = 0; i < index; i++) {
if (cur == NULL) {
return false;
}
cur = cur->next;
}
if (cur == NULL) {
return false;
}
cur->val = val;
return true;
}
// 查找指定位置上节点的值
int get(int index) {
ListNode* cur = head;
for (int i = 0; i < index; i++) {
if (cur == NULL) {
return -1;
}
cur = cur->next;
}
if (cur == NULL) {
return -1;
}
return cur->val;
}
private:
ListNode* head;
};
int main() {
LinkedList list;
list.insert(1);
list.insert(2);
list.insert(3);
cout << "get(0) = " << list.get(0) << endl;
cout << "get(1) = " << list.get(1) << endl;
cout << "get(2) = " << list.get(2) << endl;
list.update(1, 4);
cout << "get(0) = " << list.get(0) << endl;
cout << "get(1) = " << list.get(1) << endl;
cout << "get(2) = " << list.get(2) << endl;
list.remove(1);
cout << "get(0) = " << list.get(0) << endl;
cout << "get(1) = " << list.get(1) << endl;
return 0;
}
```
这个代码实现了链表的增删改查功能,包括:
- 在链表尾部插入一个节点。
- 删除指定位置上的节点。
- 修改指定位置上节点的值。
- 查找指定位置上节点的值。
其中,链表的节点使用结构体 `ListNode` 定义,包含了节点的值 `val` 和指向下一个节点的指针 `next`。链表的类定义为 `LinkedList`,其中包含了链表头节点的指针 `head`,以及上述四个操作的具体实现。在 `main` 函数中,我们创建了一个链表对象 `list`,并对其进行了一些操作,来验证链表的实现是否正确。
阅读全文