以下是一篇关于C++链表结构的文章:
C++链表结构的介绍
在C++编程中,链表是一种重要的数据结构,它用于存储一系列元素,其中每个元素(节点)包含数据和指向下一个元素的指针(对于单链表)或指向前一个和下一个元素的指针(对于双链表)。链表的优点是可以在运行时动态分配内存,插入和删除操作的时间复杂度为 O(1)O(1)O(1)(对于已知位置),不需要像数组那样预分配固定大小的内存。
一、单链表
1. 单链表的节点结构
一个单链表的节点通常包含一个数据成员和一个指向下一个节点的指针。以下是单链表节点的C++实现:
#include <iostream>
class Node {
public:
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {
}
};
在这个代码中:
data
存储节点的数据。next
是一个指向Node
类型的指针,用于指向下一个节点。
2. 单链表的基本操作
插入操作
以下是在链表头部插入节点的操作:
void insertAtHead(Node*& head, int val) {
Node* newNode = new Node(val);
newNode->next = head;
head = newNode;
}
以下是在链表尾部插入节点的操作:
void insertAtTail(Node*& head, int val) {
Node* newNode = new Node(val);
if (head == nullptr) {
head = newNode;
return;
}
Node* temp = head;
while (temp->next!= nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
在这些代码中:
insertAtHead
函数创建一个新节点并将其作为新的头节点,将原头节点设为新节点的下一个节点。insertAtTail
函数先检查链表是否为空,如果为空则将新节点作为头节点,否则找到尾节点并将新节点添加到末尾。
删除操作
以下是删除链表头部节点