以顺序表作存储结构,实现线性表的创建、插入。 顺序表的类型描述 #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 18:04:01 浏览: 86
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef int ElemType;
typedef struct
{
ElemType *elem;
int length;
} SqList;
int InitList(SqList *L, int n);
int ListInsert(SqList *L, int pos, ElemType e);
int main()
{
SqList L;
int n, pos;
ElemType e;
scanf("%d", &n);
InitList(&L, n);
for (int i = 0; i < n; i++)
{
scanf("%d", &L.elem[i]);
}
scanf("%d %d", &pos, &e);
printf("Before:(");
for (int i = 0; i < L.length; i++)
{
printf("%d", L.elem[i]);
if (i != L.length - 1)
{
printf(",");
}
}
printf(")\n");
int ret = ListInsert(&L, pos, e);
if (ret == 0)
{
printf("After:(");
for (int i = 0; i < L.length; i++)
{
printf("%d", L.elem[i]);
if (i != L.length - 1)
{
printf(",");
}
}
printf(")\n");
}
else if (ret == 1)
{
printf("Insert position error!\n");
}
else if (ret == 2)
{
printf("OVERFLOW!\n");
}
free(L.elem);
return 0;
}
// 初始化线性表
int InitList(SqList *L, int n)
{
L->elem = (ElemType *)malloc(sizeof(ElemType) * MAXSIZE);
if (!L->elem)
{
return 2;
}
L->length = n;
return 0;
}
// 在线性表的指定位置插入元素
int ListInsert(SqList *L, int pos, ElemType e)
{
if (pos < 1 || pos > L->length + 1)
{
return 1;
}
if (L->length >= MAXSIZE)
{
return 2;
}
for (int i = L->length - 1; i >= pos - 1; i--)
{
L->elem[i + 1] = L->elem[i];
}
L->elem[pos - 1] = e;
L->length++;
return 0;
}
```
输入样例1:
```
5
1 3 5 7 9
3 4
```
输出样例1:
```
Before:(1,3,5,7,9)
After:(1,3,4,5,7,9)
```
输入样例2:
```
5
1 3 5 7 9
7 10
```
输出样例2:
```
Before:(1,3,5,7,9)
Insert position error!
```
输入样例3:
```
10
1 2 3 4 5 6 7 8 9 10
6 7
```
输出样例3:
```
Before:(1,2,3,4,5,6,7,8,9,10)
OVERFLOW!
```
阅读全文