本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。C语言
时间: 2024-03-05 21:49:59 浏览: 157
带头结点链表的各种操作(c语言)
下面是一个示例代码,实现了在递增的整数序列链表中插入一个新整数:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
void insert(ListNode *head, int val) {
ListNode *newNode = (ListNode *) malloc(sizeof(ListNode));
newNode->val = val;
ListNode *cur = head->next;
ListNode *prev = head;
while (cur != NULL && cur->val < val) {
prev = cur;
cur = cur->next;
}
prev->next = newNode;
newNode->next = cur;
}
int main() {
ListNode *head = (ListNode *) malloc(sizeof(ListNode));
head->next = NULL;
insert(head, 1);
insert(head, 3);
insert(head, 2);
ListNode *cur = head->next;
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
return 0;
}
```
在这个示例代码中,我们定义了一个链表节点 `ListNode`,包含一个整数值 `val` 和一个指向下一个节点的指针 `next`。我们还定义了一个 `insert` 函数,接受一个链表头结点 `head` 和一个新整数值 `val`。在 `insert` 函数中,我们先创建一个新的节点 `newNode`,并将其值设为 `val`。然后我们遍历链表,找到第一个大于等于 `val` 的节点的前一个节点 `prev`,并将 `newNode` 插入到 `prev` 和 `prev->next` 之间。
在 `main` 函数中,我们创建了一个带头结点的链表,然后插入了三个整数值。最后我们遍历链表并打印出所有的节点值。输出结果为 `1 2 3`,符合递增序列的要求。
阅读全文