链表创建(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 #include struct ListNode {int val;struct ListNode

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; } ```### 总结链表创建是链表操作的基础,熟练掌握链表的创建方法对于后续学习其他链表操作至关重要。在实际应用中,需要根据具体的需求选择合适的链表类型和创建方法。

标签列表