写出在单链表上结点的数据域为X的结点之前插入一个新结点的程序用C语言打出来
时间: 2024-10-11 18:15:10 浏览: 67
在C语言中,我们可以创建一个函数来在单链表中某个特定节点(数据域为X)的前面插入一个新节点。这里假设我们有一个结构体`Node`表示链表的节点,包含`data`用于存储值和`next`指向下个节点。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 插入新节点到指定位置的函数
void insertBefore(Node** head, int X, int value) {
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
// 如果链表为空或者头节点就是要找的节点
if (*head == NULL || ((*head)->data == X)) {
newNode->next = *head;
*head = newNode;
return;
}
// 遍历找到数据为X的节点
Node* curr = *head;
while (curr != NULL && curr->data != X) {
curr = curr->next;
}
// 在找到的节点前插入新节点
newNode->next = curr->next;
curr->next = newNode;
}
// 主函数演示如何使用
int main() {
// 初始化链表
Node* head = NULL;
// 添加一些节点
insertBefore(&head, 5, 1); // 在数据为5的节点前插入1
insertBefore(&head, 7, 3); // 在数据为7的节点前插入3
// 打印链表
Node* temp = head;
printf("链表: ");
while(temp != NULL){
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
return 0;
}
```
阅读全文