顺序表创建的c语言实现遇到了问题求解答


#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int status;
typedef struct {
    ElemType *elem;
    int length;
} SqList;

status InitList(SqList &L){
    L.elem = new int[MAXSIZE];
    if(!L.elem)
        exit(ERROR);
    L.length = 0;
    return OK;
}

status Create(SqList L) {
    int i,n;
    printf("输入元素个数:");
    scanf("%d",&n);
    L.length=n;
    printf("输入整型元素:  ");
    for (i=0; i<n; i++)
        scanf("%d", &L.elem[i]);
    return OK;
}

void ListOutput(SqList L) //输出List
{
    int i;
    for (i = 0; i < L.length; i++)
        printf("%d",L.elem[i]) ;
    return;
}

int main() {
    SqList L;
    InitList(L);    

    Create(L);
    ListOutput(L);
    return 0;
}

img

14行,L前的取地址符改成*号,不能用取地址符,然后下面的程序也要改,如果还不懂,可以私聊我

img


这个错误提示,是之前运行的代码仍然在运行,打开任务管理器,找到运行的 .exe 文件,结束进程即可。代码没什么问题,第22行 status Create(SqList L) 函数形参这里还是要引用,修改为:status Create(SqList &L) 即可,修改如下,供参考:


#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int status;
typedef struct {
    ElemType *elem;
    int length;
} SqList;

status InitList(SqList &L){
    L.elem = new int[MAXSIZE];
    if(!L.elem)
        exit(ERROR);
    L.length = 0;
    return OK;
}

status Create(SqList &L) {//修改 status Create(SqList L)
    int i,n;
    printf("输入元素个数:");
    scanf("%d",&n);
    L.length=n;
    printf("输入整型元素:  ");
    for (i=0; i<n; i++)
        scanf("%d", &L.elem[i]);
    return OK;
}

void ListOutput(SqList L) //输出List
{
    int i;
    for (i = 0; i < L.length; i++)
        printf("%d",L.elem[i]) ;
    return;
}

int main() {
    SqList L;
    InitList(L);

    Create(L);
    ListOutput(L);
    return 0;
}