链表的基本操作代码c++
时间: 2024-09-14 22:04:14 浏览: 14
链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C++中,链表的基本操作通常包括创建节点、插入节点、删除节点和遍历链表。
以下是一些基础的C++代码示例,展示了如何进行这些基本操作:
```cpp
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int value; // 节点存储的数据
ListNode* next; // 指向下一个节点的指针
// 构造函数
ListNode(int x) : value(x), next(nullptr) {}
};
// 创建一个链表
ListNode* createList(const std::initializer_list<int>& vals) {
ListNode dummy(0); // 辅助头节点
ListNode* tail = &dummy;
for (int val : vals) {
tail->next = new ListNode(val);
tail = tail->next;
}
return dummy.next;
}
// 在链表头部插入节点
void insertHead(ListNode*& head, int value) {
ListNode* newHead = new ListNode(value);
newHead->next = head;
head = newHead;
}
// 在链表尾部插入节点
void insertTail(ListNode*& head, int value) {
ListNode* newNode = new ListNode(value);
if (!head) {
head = newNode;
return;
}
ListNode* tail = head;
while (tail->next) {
tail = tail->next;
}
tail->next = newNode;
}
// 删除链表中的节点
void deleteNode(ListNode*& head, int value) {
if (!head) return;
ListNode* temp = head;
if (head->value == value) {
head = head->next;
delete temp;
return;
}
while (temp->next != nullptr) {
if (temp->next->value == value) {
ListNode* toDelete = temp->next;
temp->next = toDelete->next;
delete toDelete;
return;
}
temp = temp->next;
}
}
// 遍历链表并打印
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->value << " ";
temp = temp->next;
}
std::cout << std::endl;
}
// 主函数,用于测试链表操作
int main() {
ListNode* myList = createList({3, 5, 8});
printList(myList);
insertHead(myList, 1);
printList(myList);
insertTail(myList, 9);
printList(myList);
deleteNode(myList, 5);
printList(myList);
// 释放链表内存(通常在程序结束前进行)
while (myList != nullptr) {
ListNode* temp = myList;
myList = myList->next;
delete temp;
}
return 0;
}
```
在这段代码中,我们定义了一个`ListNode`结构体来表示链表的节点,并实现了创建链表、在头部和尾部插入节点、删除特定值的节点以及遍历打印链表的方法。