在一个带头节点的有序单链表之间插入元素X,保持链表的升序排列,用c语言写
时间: 2024-12-20 08:31:20 浏览: 10
在C语言中,为了在一个带头节点的有序单链表中插入元素X并保持升序,你可以创建一个新的节点,然后遍历链表找到合适的位置。以下是具体的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
// 插入函数
void insertSorted(Node** head, int x) {
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = x;
newNode->next = NULL;
if (*head == NULL || (*head)->data > x) { // 如果链表为空或者头节点大于x
newNode->next = *head;
*head = newNode;
return;
}
Node* temp = *head;
while (temp->next != NULL && temp->next->data < x) { // 找到插入位置
temp = temp->next;
}
newNode->next = temp->next; // 将新节点插入到找到的位置
temp->next = newNode;
}
// 测试函数
void printList(Node* head) {
while (head != NULL) {
printf("%d -> ", head->data);
head = head->next;
}
printf("NULL\n");
}
int main() {
Node* head = NULL;
// 初始化头节点和链表...
// 插入元素X
insertSorted(&head, x);
// 输出链表验证结果
printList(head);
return 0;
}
```
阅读全文