用C语言创建一个顺序表并生成随机数进行排列
时间: 2023-12-10 16:40:55 浏览: 84
c语言练习题
下面是一个简单的示例代码,用于创建一个顺序表并生成随机数进行排列。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
// 初始化顺序表
void InitList(SeqList *L) {
L->length = 0;
}
// 插入元素
int ListInsert(SeqList *L, int pos, int elem) {
int i;
if (pos < 1 || pos > L->length + 1) {
return 0;
}
if (L->length >= MAX_SIZE) {
return 0;
}
for (i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1];
}
L->data[pos - 1] = elem;
L->length++;
return 1;
}
// 生成随机数
int Rand(int min, int max) {
return rand() % (max - min + 1) + min;
}
// 随机排列
void Randomize(SeqList *L) {
int i, j, temp;
srand(time(NULL));
for (i = L->length - 1; i >= 0; i--) {
j = Rand(0, i);
temp = L->data[i];
L->data[i] = L->data[j];
L->data[j] = temp;
}
}
// 打印顺序表
void PrintList(SeqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SeqList L;
InitList(&L);
int i, elem;
for (i = 1; i <= MAX_SIZE; i++) {
elem = Rand(1, 100);
ListInsert(&L, i, elem);
}
printf("Before randomize: ");
PrintList(L);
Randomize(&L);
printf("After randomize: ");
PrintList(L);
return 0;
}
```
代码中使用 `SeqList` 结构体来表示顺序表,包含一个数组 `data` 和一个长度 `length`。`InitList` 函数用于初始化顺序表,`ListInsert` 函数用于插入元素。`Rand` 函数用于生成指定范围内的随机数,`Randomize` 函数用于随机排列顺序表中的元素。最后在 `main` 函数中生成随机数并插入顺序表中,然后打印未排列前的顺序表,随机排列后再次打印顺序表。
阅读全文