定义节点结构并用指针连接,通过new创建节点并链接,可封装为createList函数从数组构建链表,最后需deleteList释放内存防止泄漏。

在c++中创建单向链表,核心是定义节点结构体并使用指针将节点依次连接。整个过程不复杂,但需要注意内存管理和指针操作的准确性。
定义链表节点结构
单向链表的每个节点包含两部分:数据域和指向下一个节点的指针。通常用Struct来定义节点类型。
struct Listnode {
int data; // 数据域,可以是任意类型
ListNode* next; // 指针域,指向下一个节点
// 构造函数(可选)
ListNode(int val) : data(val), next(nullptr) {}
};
构造函数用于简化节点创建时的初始化操作。
手动创建链表节点
通过new关键字动态分配内存,逐个创建节点,并用指针连接。
立即学习“C++免费学习笔记(深入)”;
// 创建第一个节点
ListNode* head = new ListNode(1);
ListNode* second = new ListNode(2);
ListNode* third = new ListNode(3);
// 连接节点
head->next = second;
second->next = third;
third->next = nullptr; // 尾节点指向空
此时head就是链表的头指针,通过它可以访问整个链表。
封装成函数方便使用
为了提高复用性,可以写一个函数来创建链表,比如从数组构建链表。
ListNode* createList(int arr[], int n) {
if (n == 0) return nullptr;
ListNode* head = new ListNode(arr[0]);
ListNode* current = head;
for (int i = 1; i current->next = new ListNode(arr[i]);
current = current->next;
}
return head;
}
调用示例:
int values[] = {1, 2, 3, 4, 5};
int size = 5;
ListNode* myList = createList(values, size);
注意事项
使用动态内存创建链表后,记得在程序结束前释放内存,防止泄漏。
void deleteList(ListNode* head) {
ListNode* temp;
while (head != nullptr) {
temp = head;
head = head->next;
delete temp;
}
}
基本上就这些。掌握节点定义、动态创建和指针链接,就能灵活实现单向链表。关键是理解指针如何串联数据,形成逻辑上的“链”。


