编写程序,从键盘输入十个整数,将这些整数插入到一个带头结点的双向链表中,并按从下到大顺序排列
时间: 2024-09-26 08:16:18 浏览: 40
整数链表
要创建一个程序,首先我们需要定义双向链表结构(包括头结点和节点结构),以及一些辅助函数来添加新元素并排序链表。这里是一个简单的示例,使用C语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct Node {
int value;
struct Node* prev;
struct Node* next;
} Node;
// 创建新的链表节点
Node* createNode(int val) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->value = val;
newNode->prev = NULL;
newNode->next = NULL;
return newNode;
}
// 插入节点并保持链表有序
void insertSorted(Node** head, Node* newNode) {
Node* current = *head;
if (current == NULL || newNode->value > current->value) {
newNode->prev = NULL;
newNode->next = *head;
*head = newNode;
} else {
while (current->next && newNode->value <= current->next->value) {
current = current->next;
}
newNode->prev = current;
newNode->next = current->next;
if (current->next)
current->next->prev = newNode;
current->next = newNode;
}
}
// 主程序入口
int main() {
Node* head = NULL;
int input;
printf("请输入十个整数(输入-1结束):\n");
for (int i = 0; i < 10; ) {
scanf("%d", &input);
if (input == -1)
break;
Node* newNode = createNode(input);
insertSorted(&head, newNode);
i++; // 更新计数器
}
// 打印链表,显示从下到大的顺序
Node* temp = head;
while (temp) {
printf("%d ", temp->value);
temp = temp->next;
}
printf("\n");
return 0;
}
```
运行这个程序,用户可以逐次输入10个整数,结束后链表会按从下到大的顺序排列。
阅读全文