c语言链表创建的详细流程
时间: 2023-11-27 10:49:45 浏览: 28
链表是一种非常常用的数据结构,下面是使用 C 语言创建链表的详细流程:
1. 定义链表节点结构体
定义一个结构体作为链表的节点,通常包含两个成员:一个是存储数据的变量,另一个是指向下一个节点的指针。
```
struct ListNode {
int val;
struct ListNode *next;
};
```
2. 创建头节点
链表的头节点是一个特殊的节点,它不存储数据,只用来表示链表的起始位置。创建头节点可以使用 malloc 函数动态分配内存空间,并将其指针赋值给链表的头指针。
```
struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next = NULL;
```
3. 添加新节点
在链表中添加新节点的步骤如下:
- 创建一个新节点,使用 malloc 函数动态分配内存空间。
- 将新节点的值赋给 val 成员。
- 将新节点插入到链表中,让它成为链表的最后一个节点。
```
struct ListNode *newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
newNode->val = 1;
newNode->next = NULL;
struct ListNode *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newNode;
```
4. 遍历链表
使用 while 循环遍历链表,从头节点开始一直往后遍历,直到链表的末尾。
```
struct ListNode *p = head->next;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
```
5. 删除节点
在链表中删除节点的步骤如下:
- 找到要删除的节点的前一个节点。
- 将前一个节点的 next 指针指向要删除节点的下一个节点。
- 释放要删除节点的内存空间。
```
struct ListNode *p = head;
while (p->next != NULL && p->next->val != val) {
p = p->next;
}
if (p->next != NULL) {
struct ListNode *delNode = p->next;
p->next = delNode->next;
free(delNode);
}
```