这个定义为什么会报错

如图,#define Max 10为什么会出现报错,(求解,求!解!(凑字数用的))

img

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#define Max 10
using namespace std;
typedef struct list{
    int date[Max];
    int length;//线性表长度 
}list;
//空表 
list *int_l(list *L){
    L->length=0;
    return L;
}
//顺序表初始化 
list *insert_l(list *L,int i,int x){
    if((i<1)&&(i>L->length+1)){
        cout<<"插入位置i不合理";
        exit(1);
    }
    if(L->length>=L->Max-1){
        cout<<"顺序表已满,不能继续插入";
        exit(1);
    }
    for(int m=L->length-1;m>=i-1;--m){
        L->date[m+1]=L->date[m];
        L->date[i-1]=x;
        L->length++;
    }
    return L;
}
//删除值为x的第一个数
list *delete_l(list *L,int x){
    for(int i;i<L->length;i++){
        if(L->date[i]==x){
        /*    for(int j=i;j<L->length-1;j++){
                L->date[j]=L->length[j+1];
            }*/
            L->date[i]=L->date[i+1];
        }
        L->length--;
        return L;
    }
} 
int main()
{
    list *L;
    L=(list*)malloc(sizeof(list));
    if(!L) exit(1);
    insert_l(L,1,1);
    insert_l(L,2,11);
    insert_l(L,3,12);
    insert_l(L,4,13);
    insert_l(L,5,111);
    insert_l(L,6,11);
    insert_l(L,7,185);
    insert_l(L,8,190);
    insert_l(L,9,123);
    insert_l(L,10,132);
    cout<<"删除第一个11前"<<endl;
    for(int i=0;i<L->length;i++){
        cout<<L->date[i]<<" ";
    }
    cout<<"删除第一个11后"<<endl;
    list *l=delete_l(L,11);
    for(int i=0;i<L->length;i++){
        cout<<l->date[i]<<" ";
    }
    
}    

你查看一下你设置的编码严谨等级是不是最高级,最高级严谨程度下是不允许出现未调用量的,或者看看代码里面有没有调用过,或者是否设置了警告都视为报错。或者发给我我看看🧐

【以下回答由 GPT 生成】

问题的原因是在C语言代码中,使用了C++的头文件 <iostream> 和命名空间 using namespace std;。C语言中不支持使用iostream和命名空间的语法,因此编译时会报错。

为了解决这个问题,需要将这部分C++的代码替换为C语言的代码。同时,为了使程序更加健壮,在进行指针变量的动态内存分配时,需要检查内存是否分配成功。

下面是修改后的代码:

#include<stdio.h>
#include<stdlib.h>
#define Max 10

typedef struct list{
    int date[Max];
    int length; //线性表长度 
}list;

//空表 
list *int_l(list *L){
    L->length=0;
    return L;
}

//顺序表初始化 
list *insert_l(list *L,int i,int x){
    if((i<1)||(i>L->length+1)){
        printf("插入位置i不合理");
        exit(1);
    }
    if(L->length>=Max-1){
        printf("顺序表已满,不能继续插入");
        exit(1);
    }
    for(int m=L->length-1;m>=i-1;--m){
        L->date[m+1]=L->date[m];
        L->date[i-1]=x;
        L->length++;
    }
    return L;
}

//删除值为x的第一个数
list *delete_l(list *L,int x){
    for(int i=0;i<L->length;i++){
        if(L->date[i]==x){
            /*for(int j=i;j<L->length-1;j++){
                L->date[j]=L->length[j+1];
            }*/
            L->date[i]=L->date[i+1];
        }
        L->length--;
        return L;
    }
} 

int main()
{
    list *L;
    L=(list*)malloc(sizeof(list));
    if(!L) {
        printf("内存分配失败");
        exit(1);
    }
    L = int_l(L);
    L = insert_l(L,1,1);
    L = insert_l(L,2,11);
    L = insert_l(L,3,12);
    L = insert_l(L,4,13);
    L = insert_l(L,5,111);
    L = insert_l(L,6,11);
    L = insert_l(L,7,185);
    L = insert_l(L,8,190);
    L = insert_l(L,9,123);
    L = insert_l(L,10,132);
    printf("删除第一个11前\n");
    for(int i=0;i<L->length;i++){
        printf("%d ", L->date[i]);
    }
    printf("\n删除第一个11后\n");
}

以上就是对问题的解答和代码改进。如果有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^