c语言编写函数在递增的整数序列链表中插入一个新整数,并保持该序列的有效性,并写一个main函数用于测试
时间: 2024-12-20 16:29:47 浏览: 8
在C语言中,我们可以创建一个结构体表示整数链表节点,然后编写一个函数`insertSorted`来在递增的整数链表中插入新的整数。假设我们的链表节点结构如下:
```c
typedef struct Node {
int value;
struct Node* next;
} ListNode;
```
接下来,我们编写函数`insertSorted`,它接受一个指向链表头节点的指针`head`, 新的整数值`new_value`以及链表头指针`head`:
```c
void insertSorted(ListNode** head, int new_value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->value = new_value;
newNode->next = NULL;
if (*head == NULL || new_value < (*head)->value) {
newNode->next = *head;
*head = newNode;
} else {
ListNode* current = *head;
while (current->next != NULL && new_value > current->next->value) {
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
}
```
在这个函数里,如果链表为空或新值小于当前链表的第一个元素,就将新节点置为首节点。否则,遍历链表找到合适的位置插入新值。
最后,我们需要一个`main`函数来测试这个`insertSorted`函数:
```c
int main() {
// 初始化链表
ListNode* head = NULL;
// 插入一些数字(示例)
insertSorted(&head, 5);
insertSorted(&head, 2);
insertSorted(&head, 8);
insertSorted(&head, 1);
// 打印链表验证结果
printList(head); // 假设这里有一个自定义的打印链表函数
return 0;
}
```
注意,这只是一个简单的例子,实际项目中你可能需要处理链表为空的情况和其他边界条件。同时,为了完整地测试这个功能,你需要提供一个`printList`函数来显示链表内容。
阅读全文