c语言实现链表节点的修改
时间: 2023-08-10 07:19:54 浏览: 72
要修改链表中的某个节点,需要先找到该节点,然后修改其数据。
以下是一个示例程序,演示了如何实现修改链表节点的数据:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构体
struct Node {
int data; // 节点数据
struct Node *next; // 指向下一个节点的指针
};
// 修改链表节点的数据
void modifyNode(struct Node *head, int index, int newData) {
struct Node *p = head;
int i = 0;
while (p != NULL && i < index) {
p = p->next;
i++;
}
if (p != NULL) {
p->data = newData;
}
}
int main() {
// 创建一个有三个节点的链表
struct Node *head = (struct Node *)malloc(sizeof(struct Node));
head->data = 1;
head->next = (struct Node *)malloc(sizeof(struct Node));
head->next->data = 2;
head->next->next = (struct Node *)malloc(sizeof(struct Node));
head->next->next->data = 3;
head->next->next->next = NULL;
// 修改第二个节点的数据
modifyNode(head, 1, 10);
// 输出链表中的所有节点数据
struct Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
// 释放链表中每个节点的内存
struct Node *q = head;
while (q != NULL) {
struct Node *temp = q->next;
free(q);
q = temp;
}
return 0;
}
```
在上面的示例程序中,`modifyNode` 函数用于修改链表中某个节点的数据。它的参数 `head` 是链表的头节点,`index` 是要修改的节点的下标(从0开始),`newData` 是修改后的数据。函数中使用循环找到要修改的节点,然后修改其数据。注意,如果链表中没有对应下标的节点,函数什么也不做。
在 `main` 函数中,我们创建了一个有三个节点的链表,并调用 `modifyNode` 函数修改了第二个节点的数据。最后,我们遍历整个链表,输出每个节点的数据,并释放每个节点的内存。