C++ 中,链表是一种常见的数据结构。链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
链表的主要优点包括:
动态大小:可以根据需要添加或删除节点,不受固定大小的限制。
高效的插入和删除操作:在特定位置插入或删除节点的时间复杂度通常为 O (1),前提是知道要操作的位置的指针。
链表缺点:
随机访问困难:不像数组可以通过索引直接访问元素,链表需要从头节点开始遍历才能访问特定的节点。
额外的内存开销:每个节点都需要额外的指针空间来存储指向下一个节点的引用。
示例:
#include <iostream>
struct ListNode {
int data;
ListNode* next;
ListNode(int val) : data(val), next(nullptr) {}
};
class LinkedList {
public:
LinkedList() : head(nullptr) {}
void insert(int val) {
ListNode* newNode = new ListNode(val);
if (!head) {
head = newNode;
} else {
ListNode* temp = head;
while (temp->next) {
temp = temp->next;
}
temp->next = newNode;
}
}
void display() {
ListNode* temp = head;
while (temp) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}
private:
ListNode* head;
};
int main() {
LinkedList myList;
myList.insert(1);
myList.insert(2);
myList.insert(3);
myList.display();
return 0;
}