请问这个代码哪里错了啊?应该怎么改啊


#include<iostream>
#include<stdlib.h>
using namespace std;

#define INITSIZE 100
#define INCEREMENT 10
#define overflow 0
#define OK 1

typedef int Elemtype;

typedef struct{
    Elemtype *elem;//动态数组基址
    int len;//当前长度
    int listsize;//总共分配的存储容量     
}Sqlist;

Sqlist la,lb;

void Initlist(Sqlist &L);
void Appendelem(Sqlist &L);
void Insertelem(Sqlist &L);
void Deletlist(Sqlist &L);
void Outelem(Sqlist &L);

void main(){
    Sqlist s;
    Initlist(s);
    Appendelem(s);
    Insertelem(s);
    Deletlist(s);
    Outelem(s);
}

//顺序表初始化 
void Initlist(Sqlist &L){
    L.elem = (Elemtype *)malloc(INITSIZE*sizeof(Elemtype));
    if(!L.elem)
    exit(overflow);
    L.listsize = INITSIZE;
    
}

//在表的尾部追加一个新成员
void Appendelem(Sqlist &L){
    Elemtype e;
    if(L.len >= L.listsize)
    exit(overflow);
    L.elem[L.len] = e;
    L.len++;
} 

//插入新成员 
void Insertelem(Sqlist &L){
    int i;
    Elemtype e;
    //int j,k;
    Elemtype *newaddress,*p,*q;
    if(L.len >= L.listsize){
        //如果所分配空间已经占满
        newaddress = (Elemtype *)malloc((INITSIZE+INCEREMENT)*sizeof(Elemtype));
        if(!newaddress)
        exit(overflow);
        L.elem = newaddress;
        L.listsize += INCEREMENT;
    }
    q = &(L.elem[i]);
    for(p = &(L.elem[L.len-1]);p >= q;p--)
    *(p+1) = *p;
    *q = e;
    L.len++;
}

//删除成员
void Deletlist(Sqlist &L){
    int i;
    int &e;
    Elemtype *p,*q;
    if(i < 0|| i > L.len-1)
    exit(overflow);
    q = &(L.elem[i]);
    e = *q;
    p = L.elem+L.len-1;
    
    for(q++;q <= p;q++)
    *(q-1) = *q;
    L.len--;
} 

//输出成员 
void Outelem(Sqlist &L){
    int i;
    for(i = 0;i <= L.len;i++)
        cout << L.elem[i] << endl;
}

img

img

请问这个代码哪里错了啊
应该怎么改啊
谢谢了

&e是取e变量的地址,你这是在申明变量,肯定没有地址啊,按照你后面的用法,你的e是取值,而不是取址,所以你就int e就可以了啊。如果你是想用指针变量应该是int *e