以顺序表作存储结构,实现线性表的创建、插入。 顺序表的类型描述 #define MAXSIZE 10 // MAXSIZE为最大数据元素数目 typedef int ElemType; typedef struct { ElemType *elem; int length; } SqList; 输入格式: 输入分三行 第一行 元素个数 第二行 元素的值。元素间以空格分隔。 第三行 待插入的位置和元素值 具体格式参看输入样例 输出格式: 输出分两行 第一行 插入前的线性表 第二行 插入后的线性表。 如因插入位置错误失败,输出Insert position error! 如因为表满插入失败,输出OVERFLOW! 具体格式参看输出样例 输入样例: 5 1 3 5 7 9 3 4 输出样例: Before:(1,3,5,7,9) After:(1,3,4,5,7,9) 输入样例: 5 1 3 5 7 9 7 10 输出样例: Before:(1,3,5,7,9) Insert position error! 输入样例: 10 1 2 3 4 5 6 7 8 9 10 6 7 输出样例: Before:(1,2,3,4,5,6,7,8,9,10) OVERFLOW!
时间: 2024-01-03 14:04:01 浏览: 189
以下是题目的解答:
```python
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 // MAXSIZE为最大数据元素数目
typedef int ElemType;
typedef struct {
ElemType *elem;
int length;
} SqList;
// 初始化线性表函数
void InitList(SqList &L) {
L.elem = (ElemType*)malloc(MAXSIZE * sizeof(ElemType));
L.length = 0;
}
// 插入元素函数
bool ListInsert(SqList &L, int i, ElemType e) {
if (i < 1 || i > L.length + 1) {
printf("Insert position error!\n");
return false;
}
if (L.length >= MAXSIZE) {
printf("OVERFLOW!\n");
return false;
}
for (int j = L.length; j >= i; j--) {
L.elem[j] = L.elem[j - 1];
}
L.elem[i - 1] = e;
L.length++;
return true;
}
// 打印线性表函数
void PrintList(SqList L) {
printf("Before:");
for (int i = 0; i < L.length; i++) {
printf("(%d)", L.elem[i]);
if (i != L.length - 1) {
printf(",");
}
}
printf(" ");
}
int main() {
SqList L;
InitList(L);
int n, i, e;
scanf("%d", &n);
for (int j = 0; j < n; j++) {
scanf("%d", &e);
ListInsert(L, j + 1, e);
}
scanf("%d%d", &i, &e);
PrintList(L);
ListInsert(L, i, e);
PrintList(L);
return 0;
}
```
思路解析:
该题目需要实现三个函数:`InitList`,`ListInsert`,`PrintList`,分别用于初始化线性表,插入元素和打印线性表。
在 `ListInsert` 函数中,需要检查插入位置是否合法,以及线性表是否已满,如果不合法则输出“Insert position error!”,如果已满则输出“OVERFLOW
阅读全文