用C语言产生20个1到100的随机整数并依次保存到带头结点的单链表中
时间: 2024-09-25 19:09:37 浏览: 51
链表-使用C语言实现带头结点的单链表.zip
在C语言中,你可以使用`stdlib.h`库的`srand()`和`rand()`函数生成随机数,以及`malloc()`和`free()`来处理动态内存,`struct`来定义链表节点。首先,你需要初始化随机数种子,然后创建链表节点并将随机数插入。以下是简单的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义链表节点结构体
typedef struct ListNode {
int value;
struct ListNode* next;
} ListNode;
// 初始化链表头结点
ListNode* createList() {
ListNode* head = (ListNode*) malloc(sizeof(ListNode));
head->value = 0;
head->next = NULL;
return head;
}
// 插入随机值到链表
void insertRandomValue(ListNode** head, int max) {
srand(time(0)); // 初始化随机数种子
for (int i = 0; i < 20; i++) {
int random_value = rand() % (max + 1); // 生成1到max的随机数
ListNode* newNode = (ListNode*) malloc(sizeof(ListNode));
newNode->value = random_value;
newNode->next = *head; // 新节点指向当前链表头
*head = newNode; // 更新链表头
}
}
// 打印链表元素
void printList(ListNode* head) {
while (head != NULL) {
printf("%d ", head->value);
head = head->next;
}
printf("\n");
}
int main() {
// 创建链表
ListNode* head = createList();
// 插入随机数
insertRandomValue(&head, 100);
// 打印链表
printList(head);
// 清理内存
ListNode* temp = head;
while (temp != NULL) {
ListNode* next_temp = temp->next;
free(temp);
temp = next_temp;
}
return 0;
}
```
这个程序会生成20个1到100之间的随机整数,并将它们添加到一个单链表中。运行它后,你会看到打印出的链表元素。
阅读全文