C语言编程新建两个链表,一个无序,一个降序。然后将无序的链表插入到降序的链表中,并使原来降序的链表仍然保持降序输入的整型数字以空格隔开
时间: 2024-06-20 19:02:36 浏览: 95
c语言实现链表的基本操作,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
在C语言中,我们可以使用结构体和指针来创建链表,并实现插入操作。首先,我们需要定义一个链表节点的结构体:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接着,我们可以创建两个链表,一个无序(unordered)链表和一个降序(ascending_descending)链表。无序链表可以直接初始化,而降序链表我们可以在插入时保证其始终保持降序。
创建无序链表:
```c
Node* unordered_list = NULL;
// 添加元素到无序链表
void insert_unordered(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
创建降序链表:
```c
Node* descending_list = NULL;
void insert_descending(Node** head, int value) {
if (*head == NULL || value <= (*head)->data) {
newNode->data = value;
newNode->next = *head;
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL && current->next->data < value) {
current = current->next;
}
newNode->data = value;
newNode->next = current->next;
current->next = newNode;
}
}
```
现在,你可以先创建两个链表,然后将无序链表中的元素插入到降序链表中:
```c
// 初始化数据并插入到无序链表
int unordered_values[] = {5, 2, 9, 1, 7};
int unordered_count = sizeof(unordered_values) / sizeof(int);
for (int i = 0; i < unordered_count; i++) {
insert_unordered(&unordered_list, unordered_values[i]);
}
// 将无序链表插入到降序链表
for (Node* unordered = unordered_list; unordered != NULL; unordered = unordered->next) {
insert_descending(&descending_list, unordered->data);
}
```
最后,遍历降序链表打印结果:
```c
void print_list(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
print_list(descending_list);
```
阅读全文