c语言list定义
C语言中的List(链表)定义和使用
链表(List)是一种常见的数据结构,它在C语言中被广泛使用。链表是由节点(Node)组成的,每个节点包含数据以及指向下一个节点的指针。相比于数组,链表的长度可以动态调整,更加灵活。
1. 链表的定义与结构
在C语言中,我们可以使用结构体来定义链表的节点。一个简单的链表节点定义如下:
```c
struct Node {
    int data;          // 存储的数据
    struct Node* next;  // 指向下一个节点的指针
};
```
2. 创建链表
要创建一个链表,我们首先需要定义一个指向链表头部的指针,通常称为头指针(head)。创建一个空链表的步骤如下:
```c
struct Node* head = NULL;  // 初始化头指针为空
```
3. 插入节点
链表的插入操作通常包括在链表的头部或尾部插入节点,以及在指定位置插入节点。下面是几个常见的插入操作示例:
在链表头部插入节点:
```c
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));  // 创建新节点
newNode->data = 1;  // 设置新节点的数据
newNode->next = head;  // 将新节点的next指针指向当前头节点
数组和链表
head = newNode;  // 更新头指针,使其指向新节点
```
在链表尾部插入节点:
```c
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));  // 创建新节点
newNode->data = 2;  // 设置新节点的数据
newNode->next = NULL;  // 将新节点的next指针设置为NULL,表示链表的末尾
struct Node* cur = head;
while (cur->next != NULL) {
    cur = cur->next;  // 遍历链表,到最后一个节点
}
cur->next = newNode;  // 将新节点连接到最后一个节点的next指针上
```
在指定位置插入节点:
```c
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));  // 创建新节点
newNode->data = 3;  // 设置新节点的数据
struct Node* cur = head;
while (cur->data != 2) {
    cur = cur->next;  // 遍历链表,到要插入节点的位置
}
newNode->next = cur->next;  // 将新节点的next指针指向原位置的节点
cur->next = newNode;  // 将新节点连接到指定位置的节点的next指针上
```
4. 删除节点
删除链表中的节点通常包括删除头节点、尾节点以及指定位置的节点。下面是几个常见的删除操作示例:
删除头节点:
```c
struct Node* temp = head;  // 临时保存头节点
head = head->next;  // 更新头指针,使其指向下一个节点
free(temp);  // 释放原头节点的内存空间
```
删除尾节点:
```c
struct Node* cur = head;
struct Node* prev = NULL;
while (cur->next != NULL) {
    prev = cur;
    cur = cur->next;  // 遍历链表,到尾节点和尾节点的前一个节点
}
prev->next = NULL;  // 将尾节点的前一个节点的next指针设置为NULL
free(cur);  // 释放尾节点的内存空间

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。