创建两个逃增的带头结点的有序链表.链表内容由键盘输入,用c语言
时间: 2023-07-11 11:23:03 浏览: 116
好的,以下是用 C 语言创建两个逃增的带头结点的有序链表,并从键盘输入链表内容的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 初始化带头结点的链表
ListNode *initList() {
ListNode *head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
return head;
}
// 向链表中插入节点
void insert(ListNode *head, int val) {
ListNode *p = head;
while (p->next && p->next->val < val) {
p = p->next;
}
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = val;
node->next = p->next;
p->next = node;
}
// 遍历链表并输出节点值
void traverse(ListNode *head) {
ListNode *p = head->next;
while (p) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main() {
// 创建 LA 链表
ListNode *head1 = initList();
printf("请输入 LA 链表的节点值(用空格隔开):");
char buf1[1024];
fgets(buf1, 1024, stdin);
char *p1 = strtok(buf1, " \n");
while (p1) {
int val = atoi(p1);
insert(head1, val);
p1 = strtok(NULL, " \n");
}
// 创建 LB 链表
ListNode *head2 = initList();
printf("请输入 LB 链表的节点值(用空格隔开):");
char buf2[1024];
fgets(buf2, 1024, stdin);
char *p2 = strtok(buf2, " \n");
while (p2) {
int val = atoi(p2);
insert(head2, val);
p2 = strtok(NULL, " \n");
}
// 遍历 LA 链表
printf("LA 链表的节点值为:");
traverse(head1);
// 遍历 LB 链表
printf("LB 链表的节点值为:");
traverse(head2);
return 0;
}
```
这里我们定义了一个`ListNode`结构体,用于表示链表的节点。然后通过`initList`函数初始化了带头结点的链表,通过`insert`函数向链表中插入节点,通过`traverse`函数遍历链表并输出节点的值。最后从键盘输入链表内容,创建两个逃增的带头结点的有序链表`LA`和`LB`,并遍历输出它们的节点值。
阅读全文