c语言创建两个递增的带头结点的有序链表,链表内容由键盘输入
时间: 2023-07-11 14:22:50 浏览: 104
好的,以下是用C语言创建两个递增的带头结点的有序链表的示例代码,链表内容由键盘输入:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct ListNode {
int val;
struct ListNode* next;
};
// 创建带头结点的空链表
struct ListNode* create_list() {
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->next = NULL;
return head;
}
// 在有序链表中插入元素
void insert(struct ListNode* head, int val) {
struct ListNode* cur = head;
while (cur->next && cur->next->val < val) {
cur = cur->next;
}
struct ListNode* new_node = (struct ListNode*)malloc(sizeof(struct ListNode));
new_node->val = val;
new_node->next = cur->next;
cur->next = new_node;
}
// 从键盘输入一些数字元素,创建一个有序链表
void create_sorted_list(struct ListNode* head) {
int n;
printf("请输入元素个数:");
scanf("%d", &n);
printf("请输入元素值:");
for (int i = 0; i < n; i++) {
int val;
scanf("%d", &val);
insert(head, val);
}
}
// 打印链表
void print_list(struct ListNode* head) {
struct ListNode* cur = head->next;
while (cur) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
}
int main() {
struct ListNode* head1 = create_list();
struct ListNode* head2 = create_list();
printf("创建第一个有序链表:\n");
create_sorted_list(head1);
printf("创建第二个有序链表:\n");
create_sorted_list(head2);
printf("第一个有序链表:");
print_list(head1);
printf("第二个有序链表:");
print_list(head2);
return 0;
}
```
这个示例代码中,我们定义了一个链表节点结构体 `ListNode`,包含了一个 `val` 域和一个指向下一个节点的指针 `next`。然后实现了一个 `create_list` 函数,用于创建一个带头结点的空链表;一个 `insert` 函数,用于将一个新的元素插入到有序链表中;一个 `create_sorted_list` 函数,从键盘输入一些数字元素,创建一个有序链表;一个 `print_list` 函数,用于打印链表。最后,在主函数中,我们创建了两个带头结点的空链表 `head1` 和 `head2`,分别通过 `create_sorted_list` 函数来创建并插入一些元素,最后用 `print_list` 函数打印出整个链表。
阅读全文