未初始化局部变量!abc

问题遇到的现象和发生背景

microsoft visual 2010

用代码块功能插入代码,请勿粘贴截图
#include
#include
#include
 /*定义顺序表*/
typedef struct Seqlist
{
    char date[100];
    int length;
}seqlist;    
 /*初始化顺序表*/
void Initlist(struct Seqlist *L)
{
    L->length=0;
} 
/*建立顺序表*/
int Creatlist(Seqlist *L,int a[],int n){
    if(n>100){
        printf("空间不足");
        return 0;
    }
  for(  int j=0;jdate[j]=a[j];
  }
  L->length=n;
  return 1;
}
/*输出顺序表*/
int Put(Seqlist *l,int n){
    int i;
    for(i=0;idate[i]");
    }
    return 0;
}

/*按序查找*/
int Get(Seqlist *L,int i){
    if(i<1||i>L->length){
        printf("查找位置不存在");
        return 0;
    }
    else
    {
        int p;
        p=L->date[i];
        printf("查值为");
        return p;
    }
}
/*按内容查找*/
int Lcoate(Seqlist *L,int x){
    for(int j=0;jlength;j++){
        if(x==L->date[j]){
            return j+1;
        }
        return 0;
    }
}
/*插入*/
int Insert(Seqlist *L,int i,int x){
    if(i<1||i>L->length){
        printf("插入位置不存在");
        return 0;
    }
    L->length++;
    for(int j=L->length;j>i-1;j--){
        L->date[j+1]=L->date[j];
    }
    L->date[i]=x;
    return 1;
}
/*删除*/
int Delete(Seqlist *L,int i){
    if(i<1||i>L->length){
        printf("删除位置错误");
        return 0;
    }
    for(int j=L->length;j>i;j--){
        L->date[j-1]=L->date[j];
    }
    L->length--;
    return 1;
}
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    Seqlist *list1;//定义
    Initlist(list1);//初始化
    Creatlist(list1,a,10);//创建
    Put(list1,10);//输出
    printf("查找序号3");
    Lcoate(list1,3);
    printf("\n在第三位后插入一个100:\n");
    Insert(list1,3,100);//插入
    printf("查找内容为100的序号");
    Get(list1,100);
    printf("删除序号3");
    Delete(list1,3);
    system ("pause");
    return 0;
}
        
        
运行结果及报错内容

C4715: “Lcoate”: 不是所有的控件路径都返回值
C4700: 使用了未初始化的局部变量“list1”

我想要达到的结果、

主要问题在最后,运行就直接崩溃软件出来run-time check failure #3

img

我要说一句,你的代码我用Dev-C++无法编译,你这个有语法问题

img


此外,我再来说下代码里面的逻辑问题
1.初始化方法有问题,你传进去的是个指针,你还没有给这个指针申请内存
就直接 L->length=0;,你不觉得会有问题吗?

Initlist(list1);//初始化
 /*初始化顺序表*/
void Initlist(struct Seqlist *L)
{
    L->length=0;
}

2.Put方法也有问题,你直接把printf的参数放进了字符串里面了,你没发现嘛

/*输出顺序表*/
int Put(Seqlist *l,int n){
    int i;
    for(i=0;i<n;i++){
        printf("%d,l->date[i]");
    }
    return 0;
}

3.Lcoate 方法也有问题,你怎么能把return 0直接放循环里面呢,应该放外面才对的呀,循环走完都找不到才会返回0

/*按内容查找*/
int Lcoate(Seqlist *L,int x){
    for(int j=0;j<L->length;j++){
        if(x==L->date[j]){
            return j+1;
        }
        return 0;
    }
}

4.插入和删除也存在问题,你要从尾部开始遍历那么下标应该是长度-1开始啊