【题目描述】
在顺序表第i处插入元素。
【输入形式】
元素个数
顺序表元素
插入位置 插入的元素
【输出形式】
插入后的顺序表
【输入样例】
5
2 4 6 3 10
3 7
【输出样例】
2 4 7 6 3 10
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef int ElemType;
//顺序表存储结构
typedef struct
{
ElemType* elem;
int length;
}SqList;
//初始化顺序表
Status InitList(SqList &L)
{
L.elem = new ElemType[MAXSIZE];//为顺序表分配一个大小为MAXSIZE的数组空间
if(!L.elem) return ERROR; //分配失败返回ERROR
L.length = 0; //初始化顺序表长度为0
return OK;
}
//插入操作
//顺序表 第i位 插入元素
Status ListInsert(SqList &L, int i, ElemType e)
{
//下标从1开始
//所插入的i不合理
if(i < 1 || i > L.length + 1) return ERROR;
//顺序表已满
if(L.length == MAXSIZE) return ERROR;
//插入操作
//从插入位置到顺序表末尾
for(int j = L.length; j >= i; j --)
//插入一个数后,原来位置上的数要后移一位
L.elem[j + 1] = L.elem[j];
//将插入的新元素放在第i个位置
L.elem[i] = e;
++ L.length;//更新顺序表长度
return OK;
}
//输出
Status Output(SqList &L)
{
for(int i = 1; i <= L.length; i ++)
cout << L.elem[i] << ' ';
return OK;
}
int main()
{
int n;
cin >> n;
//初始化顺序表
SqList L;
InitList(L);//调用初始化顺序表函数
L.length = n;
//输入
for(int i = 1; i <= n ; i ++) cin >> L.elem[i];
//插入位置
int x;
cin >> x;
//插入数
ElemType a;
cin >> a;
ListInsert(L, x, a);//调用插入函数
Output(L);//调用输出函数
return 0;
}