单链表的实现及应用将值为18的结点插入至SLL中第3个位置。
时间: 2024-09-20 10:15:51 浏览: 10
单链表是一种线性数据结构,每个节点包含两个部分:数据域(存储值18)和指针域(指向下一个节点)。在C语言中,我们可以创建一个简单的单链表节点结构体,如下所示:
```c
typedef struct ListNode {
int value; // 存储的数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
```
要将值为18的节点插入到单链表的第3个位置,我们需要首先创建新节点,然后更新前两个节点的`next`指针指向这个新节点,并最后设置新节点的`next`指针为原来的第三个节点。
下面是一个步骤说明:
1. 创建新节点:`ListNode* newNode = malloc(sizeof(ListNode));`
- `malloc()`分配内存给新节点。
2. 初始化新节点:`newNode->value = 18;`
- 设置新节点的值为18。
3. 遍历查找第2个节点(因为索引从0开始计数):
```c
ListNode* secondNode = head;
while (secondNode->next != NULL && secondNode->next->next != NULL) {
secondNode = secondNode->next;
}
```
4. 插入新节点:`secondNode->next = newNode;`
- 将第二个节点的`next`指针指向新节点。
5. 如果链表为空或者只有一个元素,可以直接将新节点设为头节点(`head = newNode;`)。
完整示例(假设`head`是指向链表头部的指针):
```c
if (head == NULL || head->next == NULL) {
head = newNode;
} else {
ListNode* newNode = malloc(sizeof(ListNode));
newNode->value = 18;
newNode->next = head->next;
head->next = newNode;
}
```