用C语言存放一组有序数,或产生一组随机数建立单链表并对单链表排序
时间: 2024-09-26 14:04:10 浏览: 45
在C语言中,我们可以创建一个单链表结构来存储一组有序数或随机数。首先,我们需要定义一个节点结构体`Node`,包含数据域`data`和指向下一个节点的指针`next`。
```c
struct Node {
int data; // 节点的数据域
struct Node* next; // 指向下一个节点的指针
};
```
**存放有序数:**
1. 定义一个头结点`head`并初始化它为`NULL`。
2. 遍历给定的有序数组,为每个元素创建一个新的节点,并将其添加到链表中,保持链表头部始终指向已排序部分的最后一个节点。
```c
void insert_sorted(int arr[], int size) {
struct Node* head = NULL;
for (int i = 0; i < size; i++) {
if (!head || arr[i] <= head->data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = arr[i];
newNode->next = head;
head = newNode;
} else {
struct Node* temp = head;
while (temp->next && temp->next->data < arr[i]) {
temp = temp->next;
}
newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = arr[i];
newNode->next = temp->next;
temp->next = newNode;
}
}
}
```
**产生随机数并排序:**
1. 使用C标准库的`srand()`函数设置随机数种子,然后生成随机整数。
2. 将随机数插入链表,可以参考上面的`insert_sorted`函数,这里假设有一个生成随机数的函数`generate_random()`
```c
void generate_and_sort_list(int n) {
srand(time(0)); // 设置随机数种子
struct Node* head = NULL;
for (int i = 0; i < n; i++) {
int random_num = generate_random(); // 假设这是生成随机数的函数
insert_sorted(&random_num, 1); // 插入到链表
}
// 对链表排序,由于链表内部已经按顺序排列,这里可以省略排序步骤
}
```
阅读全文