1.建立一个顺序表,随机产生10个100以内的整数,并按要求完成:(1)在屏幕上显示顺序表中的10个整数;(2)把值为b的元素插入到值为a的元素后面,若不存在a,则把b插入到表尾,显示更新后的顺序表;(3)删除值为a的元素,若不存在a,重新输入要删除的元素,找到后删除,并显示更新后的顺序表;用c语言表示
时间: 2023-06-01 11:02:45 浏览: 57
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 10 // 定义顺序表的最大长度
typedef struct {
int data[MAXSIZE]; // 存放元素的数组
int length; // 表示当前顺序表的长度
} SqList;
// 初始化顺序表
void InitList(SqList *L) {
L->length = 0;
}
// 随机产生10个100以内的整数
void CreateList(SqList *L) {
int i;
srand((unsigned) time(NULL)); // 用系统时间来初始化随机数种子
for (i = 0; i < MAXSIZE; i++) {
L->data[i] = rand() % 100; // 生成0~99之间的随机整数
L->length++;
}
}
// 显示顺序表中的元素
void DisplayList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
// 在值为a的元素后插入值为b的元素
void InsertList(SqList *L, int a, int b) {
int i, pos;
for (i = 0; i < L->length; i++) {
if (L->data[i] == a) {
pos = i + 1; // 找到a的位置
break;
}
}
if (i == L->length) { // 如果未找到a,则插入到表尾
pos = L->length;
}
for (i = L->length - 1; i >= pos; i--) { // 从后往前移动元素
L->data[i+1] = L->data[i];
}
L->data[pos] = b; // 在a后面插入b
L->length++; // 表长加1
}
// 删除值为a的元素
void DeleteList(SqList *L, int a) {
int i, pos;
for (i = 0; i < L->length; i++) {
if (L->data[i] == a) {
pos = i; // 找到a的位置
break;
}
}
if (i == L->length) { // 如果未找到a,则重新输入要删除的元素
printf("该元素不存在,请重新输入要删除的元素:");
scanf("%d", &a);
DeleteList(L, a); // 递归调用删除函数
} else {
for (i = pos; i < L->length-1; i++) { // 从前往后移动元素
L->data[i] = L->data[i+1];
}
L->length--; // 表长减1
}
}
int main() {
SqList L;
int a, b;
InitList(&L);
CreateList(&L);
printf("生成的顺序表为:");
DisplayList(L);
printf("请输入要插入的元素a和b:");
scanf("%d%d", &a, &b);
InsertList(&L, a, b);
printf("更新后的顺序表为:");
DisplayList(L);
printf("请输入要删除的元素:");
scanf("%d", &a);
DeleteList(&L, a);
printf("更新后的顺序表为:");
DisplayList(L);
return 0;
}