在一个线性表中第i个位置上插入一个新的数据元素e(假设1<=i<=线性表的长度+1)


#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef  int  ElemType;
typedef struct {
    ElemType  *elem;  //要求在初始化函数中使用动态存储分配方法给elem赋值
    int  length;
} SqList;

void initList(SqList &L);
void inputList(SqList &L);
void insertList(SqList &L,int i,ElemType e);
void printList(SqList L);

int main(void) {
    int i,e;
    SqList L;
    initList(L);
    inputList(L);
    scanf("%d %d",&i,&e);
    insertList(L,i,e);
    printList(L);
    return 0;
}

void initList(SqList &L) {
//后台已提供 
}
void inputList(SqList &L) {
//后台已提供     
}
void printList(SqList L) {
    for(int i=0; i<L.length; i++) printf("%d ",L.elem[i]);
}
/*仅提交以下代码*/
void insertList(SqList &L,int i,ElemType e) {
}

输入
第1行输入一个整数n,表示线性表的长度
第2行输入n个整数,表示线性表中存储的数据元素
第3行输入一个两个整数i和e,表示在线性表中第i个位置上插入一个数据元素e
输出
第4行输出在线性表中第i个位置上插入数据元素e之后得到的线性表中的所有元素,每两个输出数据之间有一个空格
样例输入 Copy
2
1 3
2 100
样例输出 Copy
1 100 3

将插入位置之后的元素都向后移动一位

void insertList(SqList &L, int i, ElemType e)
{
    L.elem = (ElemType*)realloc(L.elem, L.length+1);
    for (int j = L.length; j > i; j--)
        L.elem[j] = L.elem[j-1];
    L.elem[i] = e;
    L.length++;
}