链表创建(c++链表创建)
## 链表创建### 简介链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表的节点在内存中不一定是连续存储的,这使得链表在插入和删除元素时具有更高的效率。### 链表的类型
单链表:
每个节点包含一个数据域和一个指向下一个节点的指针域。
双链表:
每个节点包含一个数据域,一个指向前一个节点的指针域和一个指向下一个节点的指针域。
循环链表:
最后一个节点的指针域指向头节点,形成一个环。### 创建链表以下以创建单链表为例,说明链表的创建过程:1.
定义节点结构体
```cstruct ListNode {int val; // 节点数据struct ListNode
next; // 指向下一个节点的指针};```2.
创建头节点
头节点是一个特殊的节点,它不存储数据,仅用于标识链表的起始位置。```cstruct ListNode
head = NULL; // 初始化头节点为空head = (struct ListNode
)malloc(sizeof(struct ListNode)); // 为头节点分配内存head->next = NULL; // 头节点的指针域为空```3.
创建新节点并插入链表
尾插法:
将新节点插入到链表的尾部。```cstruct ListNode
newNode = (struct ListNode
)malloc(sizeof(struct ListNode));newNode->val = data; // 为新节点设置数据newNode->next = NULL; // 新节点的指针域为空struct ListNode
tail = head; // 从头节点开始遍历while (tail->next != NULL) {tail = tail->next; // 找到链表的尾节点}tail->next = newNode; // 将新节点连接到尾节点之后```
头插法:
将新节点插入到头节点之后。```cstruct ListNode
newNode = (struct ListNode
)malloc(sizeof(struct ListNode));newNode->val = data; newNode->next = head->next; // 新节点的指针域指向原头节点的下一个节点head->next = newNode; // 头节点的指针域指向新节点```### 示例代码```c
#include
next; };int main() {struct ListNode
head = NULL;head = (struct ListNode
)malloc(sizeof(struct ListNode));head->next = NULL;// 尾插法创建链表for (int i = 1; i <= 5; i++) {struct ListNode
newNode = (struct ListNode
)malloc(sizeof(struct ListNode));newNode->val = i;newNode->next = NULL;struct ListNode
tail = head;while (tail->next != NULL) {tail = tail->next;}tail->next = newNode;}// 打印链表struct ListNode
p = head->next;while (p != NULL) {printf("%d ", p->val);p = p->next;}return 0; } ```### 总结链表创建是链表操作的基础,熟练掌握链表的创建方法对于后续学习其他链表操作至关重要。在实际应用中,需要根据具体的需求选择合适的链表类型和创建方法。