顺序表插入特定数量元素出现问题

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

typedef struct 
{
    int data[6];
    int length;
}list;
    //初始化数组 
void start(list l)
{
    l.length=0;            //初始化数组长度 
}
    //插入元素 
bool Insert(list *l,int i,int 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++;                    //数组长度加1 
    return true;
}
    //打印数组 
void print(list l)
{
    int i=0;
    while(i<l.length)
    {
        printf("%d  ",l.data[i]);
        i++;
    }
}
int main()
{    
    list l;
    start(l);
    int i;
    for(i=1;i<7;i++)
        Insert(&l,i,i);
    printf("\n");
    print(l);
    return 0;
}

当data数组的大小为6的时候,插入元素就会出错,其他大小都没问题

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^