C语言实现用线性表随机生成10个1-100的有顺序的随机数,并输入一个元素插入
时间: 2024-03-01 19:54:13 浏览: 103
好的,我来为您解答。
首先,我们可以使用C语言中的rand()函数来生成随机数,并将它们存储在一个线性表中。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE];
int length;
} SqList;
void initList(SqList *L) {
int i;
srand((unsigned int)time(NULL)); // 初始化随机数种子
for (i = 0; i < MAX_SIZE; i++) {
L->data[i] = rand() % 100 + 1; // 生成1-100的随机数
}
L->length = MAX_SIZE;
}
void printList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void insertElem(SqList *L, int elem) {
int i, j;
if (L->length >= MAX_SIZE) {
printf("线性表已满,无法插入元素!\n");
return;
}
for (i = 0; i < L->length; i++) {
if (L->data[i] > elem) {
break;
}
}
for (j = L->length - 1; j >= i; j--) {
L->data[j + 1] = L->data[j];
}
L->data[i] = elem;
L->length++;
}
int main() {
SqList L;
initList(&L);
printf("随机生成的有序线性表为:\n");
printList(L);
int elem;
printf("请输入要插入的元素:");
scanf("%d", &elem);
insertElem(&L, elem);
printf("插入后的有序线性表为:\n");
printList(L);
return 0;
}
```
以上代码中,我们定义了一个结构体类型`SqList`,它包含一个整型数组`data`和一个表示线性表长度的整型变量`length`。`initList()`函数用于初始化线性表,它通过调用`srand()`函数初始化随机数种子,然后使用`rand()`函数随机生成10个1-100的整数,并将它们存储在`data`数组中。`printList()`函数用于输出线性表中的元素。`insertElem()`函数用于向线性表中插入一个元素,它首先判断线性表是否已满,如果已满则输出提示信息并返回;否则,它从线性表的第一个元素开始遍历,找到第一个大于待插入元素的位置,然后将这个位置后面的元素都向后移动一位,最后将待插入元素插入到这个位置上。
最后,在`main()`函数中,我们先调用`initList()`函数初始化线性表,然后调用`printList()`函数输出线性表中的元素。接着,我们通过`scanf()`函数从标准输入中读取一个整数作为待插入元素,并调用`insertElem()`函数将它插入到线性表中。最后,我们再次调用`printList()`函数输出插入后的线性表。
阅读全文