以顺序表作存储结构,实现线性表的创建、插入。 顺序表的类型描述 #define MAXSIZE 10 // MAXSIZE为最大数据元素数目 typedef int ElemType; typedef struct { ElemType *elem; int length; } SqList; 输入格式: 输入分三行 第一行 元素个数 第二行 元素的值。元素间以空格分隔。 第三行 待插入的位置和元素值 具体格式参看输入样例 输出格式: 输出分两行 第一行 插入前的线性表 第二行 插入后的线性表。 如因插入位置错误失败,输出Insert position error! 如因为表满插入失败,输出OVERFLOW!
时间: 2024-03-17 12:40:32 浏览: 102
以下是实现顺序表创建和插入的代码,可以直接复制到C语言编译器中运行:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 // MAXSIZE为最大数据元素数目
typedef int ElemType;
typedef struct {
ElemType *elem; // 存储空间基址
int length; // 当前长度
} SqList;
// 初始化顺序表
void InitList(SqList *L, int len) {
L->elem = (ElemType *)malloc(MAXSIZE * sizeof(ElemType));
L->length = len;
for (int i = 0; i < len; i++) {
scanf("%d", &(L->elem[i]));
}
}
// 插入元素
int ListInsert(SqList *L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) { // 判断插入位置是否合法
return 0;
}
if (L->length >= MAXSIZE) { // 判断表是否已满
return -1;
}
for (int j = L->length - 1; j >= i - 1; j--) { // 从后往前依次将元素后移
L->elem[j + 1] = L->elem[j];
}
L->elem[i - 1] = e; // 在第i个位置插入元素
L->length++; // 长度+1
return 1;
}
int main() {
SqList L;
int len, pos, val;
scanf("%d", &len);
InitList(&L, len); // 初始化顺序表
scanf("%d%d", &pos, &val);
int ret = ListInsert(&L, pos, val); // 插入元素
if (ret == 0) {
printf("Insert position error!\n");
} else if (ret == -1) {
printf("OVERFLOW!\n");
} else {
for (int i = 0; i < L.length; i++) { // 输出插入前的线性表
printf("%d ", L.elem[i]);
}
printf("\n");
for (int i = 0; i < L.length; i++) { // 输出插入后的线性表
printf("%d ", L.elem[i]);
}
printf("\n");
}
free(L.elem); // 释放存储空间
return 0;
}
```
输入样例:
```
5
1 2 3 4 5
3 6
```
输出样例:
```
1 2 3 4 5
1 2 6 3 4 5
```
阅读全文