请问这是怎么回事呢,逻辑上应该没问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<cstring>
#define MAX_SIZE 1000
#define typedf int
#define Status int
#define Elemtype int

//构建一个线性表
typedef struct
{
    int data[MAX_SIZE];
    int length=0;
}Sqlist;

//初始化线性表
 Status Intlist(Sqlist &L)
 {
     memset(L.data,0,sizeof(L));
     L.length=0;
     return 0;
 }
 //初始化前n个数字
 bool Creatlist(Sqlist&L,int n)
 {
     if(n<0||n>MAX_SIZE)
     {
         return false;
    }
    for(int i=0;i<n;i++)
    {
        scanf("%d",&L.data[i]);
        L.length++;
    }
    return true;
 } 
 
 bool Insertlist(Sqlist&L,int i,Elemtype e)
 {
     if(i<1||i>L.length)
     {
         printf("位置无效\n");
         return false;
    }
    if(L.length>MAX_SIZE)
    {
        printf("储存空间已经满\n");
        return 0;
    }
    for(int j=L.length;j>=i;j--)
    {
        L.data[j]=L.data[j-1];
    }
    L.data[i-1]=e;
    L.length++;
    return true;
    
 }
 
 /*****************************功能函数****************************************/
 void Creat(Sqlist &L)
 {
     bool flag;
     int n=0;
     printf("请输入线性表长度\n");
     scanf("%d",&n);
     printf("请依次输入n个数字并用空格隔开\n");
     flag=Creatlist(L,n);
     if(flag==true)
     {
     printf("线性表创建成功\n");
     
         
    }
    else if(flag==false)
    {
        printf("线性表创建失败\n");
    }
}

void Insert(Sqlist &L)
{
    bool flag;
    Elemtype A;
    int place;
    printf("请输入插入数字和插入位置,中间用空格隔开\n");
    scanf("%d%d",&A,&place);
    flag=Insertlist(L,place,A);
    if(flag==1)
    {
        printf("插入完成\n");
    for(int i=0;i<L.length;i++)
    {
        printf("%d ",&L.data[i]);
    }
}
    
}

 
int main()
{
    Sqlist L;
    Intlist(L);
    Creat(L);
    Insert(L);
    return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

93行printf的时候不需要加&,加了&打印的是每个数据元素的地址,而不是数据本身。应该写成
printf("%d ",L.data[i]);