顺序表插入元素结果结果不对



#include
#include
#include
#include
#define MaxSize 50
#define INITSIZE 100
#define OVERFLOW -1
using namespace std;
typedef int ElemType;
typedef struct
{
    ElemType *data; //存放元素基地址
    int length;
}sqlist;

//初始化线性表
void InitList(sqlist &L)
{
    L.data=new ElemType[MaxSize];
    L.length=0;
}

//顺序表的取值
void CreateList(sqlist &L)
{
    int i,N;
    cout<<"请输入顺序表中元素的个数:";
    cin>>N;
    cout<<"请输入顺序表中的元素:";
    for(i=0;i>L.data[i];
        L.length++;
    }
    
}
// 输出线性表
void DispList(sqlist &L)
{
    int i;
    for(i=0;iprintf("%d ",L.data[i]);
    printf("\n");
}
//查找最大元素
int MaxList(sqlist &L)
{
    int max,t;
    int i=0;
    for(max=L.data[i];iif(L.data[i]>max)
        {
            t=L.data[i];
            L.data[i]=max;
            max=t;
        }
    }
    return max;
}
 
 

bool ListInsert(sqlist &L, int i, ElemType e)
{
    int j;
    if (i<1 || i> L.length+1)
    return false;
    i--;
    for (j=L.length; j>i; j--)
        L.data[j]=L.data[j-1];
    L.data[i]=e;
    L.length++;
    return true;}


int main()
{
    int i;
    ElemType num1;
    sqlist L;
    InitList(L);
    CreateList(L);
    printf("该顺序表为:");
    DispList(L);
    printf("最大的元素是:%d\n",MaxList(L));
    printf("您想在哪个位置插入元素:");
    scanf("%d",&i);
    printf("您想插入什么元素:");
    scanf("%d",&num1);
    ListInsert(L,i,num1);
    DispList(L);

    return 0;
}

img


如图,顺序表中插入元素怎么做也不对,不知道怎么改了

插入一个4,也不至于变化这么大吧
你的MaxList函数为啥要修改顺序表元素的位置呢???只是查找最大值而已,干嘛要写数据交换?这完全打乱了顺序表的值啊