前用C语言的方式完成以上要求
时间: 2024-03-20 20:44:05 浏览: 9
好的,以下是你需要的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
int main() {
srand(time(NULL)); // 设置随机数种子
ListNode *head = (ListNode *)malloc(sizeof(ListNode)); // 创建头结点
head->val = 0; // 头结点的值为0
head->next = NULL;
ListNode *cur = head; // cur指向当前结点,初始值指向头结点
// 生成10个随机整数并插入链表
for (int i = 0; i < 10; i++) {
int val = rand() % 100 + 1; // 生成1~100的随机整数
ListNode *new_node = (ListNode *)malloc(sizeof(ListNode));
new_node->val = val;
new_node->next = NULL;
cur->next = new_node;
cur = cur->next;
}
// 打印链表元素
cur = head->next; // 指向第一个实际节点
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
// 释放链表内存
cur = head;
while (cur != NULL) {
ListNode *tmp = cur;
cur = cur->next;
free(tmp);
}
return 0;
}
```
这个程序首先创建了一个带头结点的单链表,然后循环10次,每次生成一个1~100的随机整数并创建一个新的结点,将其插入到链表中。最后,遍历整个链表并打印出每个结点的值。注意,在程序结束时要释放链表占用的内存。