利用头插法编程,产生20个1~200的随机整数,并依次保存到带头结点的单链表中
时间: 2024-10-08 22:06:31 浏览: 40
c代码-不带头结点单链表创建——头插法
头插法(也称为前驱插入)是一种链表操作技巧,用于在链表的头部插入新元素。首先,我们需要创建一个单链表结构和相关的节点类型。然后,我们可以使用rand()函数生成随机数,结合while循环确保生成的数字都在指定范围内。
以下是如何用C语言实现这个功能的步骤:
1. 定义链表结构:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createEmptyList() {
return NULL;
}
```
2. 随机数生成和链表头部插入:
```c
void insertRandom(Node** head, int min, int max) {
srand(time(0)); // 初始化随机数种子
while (true) {
int random_num = rand() % (max - min + 1) + min; // 生成1到(max+1-min)之间的随机数
if (random_num >= 1 && random_num <= 200) { // 检查是否在范围1到200内
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = random_num;
newNode->next = *head; // 将新节点链接到当前头节点之后
*head = newNode; // 更新头节点
break;
}
}
}
// 另外,可能还需要一个打印链表的方法
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d -> ", current->data);
current = current->next;
}
printf("NULL\n");
}
```
3. 使用这些函数创建并显示链表:
```c
int main() {
Node* head = createEmptyList();
for (int i = 0; i < 20; i++) {
insertRandom(&head, 1, 200);
}
printList(head);
return 0;
}
```
运行这段代码后,你会得到一个包含20个1到200之间随机整数的链表。
阅读全文