顺序表函数为typedef struct { KeyType key; int data[]; }RecType; 随机产生1000个整数(要求互不相同)存储于该顺序表中
时间: 2024-05-14 08:18:59 浏览: 220
首先需要定义顺序表的结构体类型:
```c
#define MAX_SIZE 1000
typedef struct {
KeyType key;
int data[MAX_SIZE];
int length;
} RecType;
```
其中,`MAX_SIZE` 定义了顺序表的最大长度。`length` 表示当前顺序表中元素的个数。
接下来,可以实现一个函数 `generateRandomList()` 来随机产生1000个互不相同的整数,并存储于该顺序表中:
```c
#include <stdlib.h>
#include <time.h>
void generateRandomList(RecType *list) {
srand((unsigned int) time(NULL)); // 设置随机数种子
list->length = 0; // 初始化顺序表长度
// 生成随机整数,并插入到顺序表中
for (int i = 0; i < MAX_SIZE; i++) {
int num = rand() % 10000; // 生成 0~9999 的随机整数
int j;
for (j = 0; j < list->length; j++) {
if (list->data[j] == num) {
break; // 若该随机数已经存在于顺序表中,则重新生成随机数
}
}
if (j == list->length) {
list->data[j] = num; // 将随机数插入到顺序表中
list->length++;
}
}
}
```
该函数使用 `srand()` 函数设置随机数种子,使用 `rand()` 函数生成 0~9999 的随机整数,然后在顺序表中查找该随机整数是否已经存在。若不存在,则将其插入到顺序表中。
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 1000
typedef int KeyType;
typedef struct {
KeyType key;
int data[MAX_SIZE];
int length;
} RecType;
void generateRandomList(RecType *list) {
srand((unsigned int) time(NULL)); // 设置随机数种子
list->length = 0; // 初始化顺序表长度
// 生成随机整数,并插入到顺序表中
for (int i = 0; i < MAX_SIZE; i++) {
int num = rand() % 10000; // 生成 0~9999 的随机整数
int j;
for (j = 0; j < list->length; j++) {
if (list->data[j] == num) {
break; // 若该随机数已经存在于顺序表中,则重新生成随机数
}
}
if (j == list->length) {
list->data[j] = num; // 将随机数插入到顺序表中
list->length++;
}
}
}
int main() {
RecType list;
generateRandomList(&list);
// 输出顺序表中的所有元素
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
阅读全文