有单链表,已知P指针,编写仅利用P指针,在P指针所指结点前插入一个结点内容为X的算法。(C语言)
时间: 2024-10-08 19:20:19 浏览: 29
单链表进阶1
在C语言中,如果你有一个指向单链表节点的指针P,并想要在其前插入一个值为X的新节点,可以按照以下步骤操作:
```c
// 定义新节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 插入函数
void insertBefore(Node** p, int X) {
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
// 新节点数据部分
newNode->data = X;
// 如果p指向的是头节点,需要特殊处理,因为头节点前无前驱
if (*p == NULL) {
newNode->next = *p;
*p = newNode;
} else {
// 新节点的next指向前一个节点
newNode->next = (*p)->next;
// 更新P指针所指节点的next为新节点
(*p)->next = newNode;
}
}
```
这个函数首先创建一个新的节点,然后设置它的数据部分为X。如果P指针为空(即链表开始),新节点直接成为头节点;否则,它将新节点插入到P指针当前位置之前。
阅读全文