明明写了初始化的程序,却还是说我没有初始化?

 顺序表L1必须要初始化才能执行,我已经编写并调用,却仍然说我的L1没有初始化

#include "stdafx.h"

#include <iostream>
using namespace std;
const int MAX=10;
typedef struct List
{ int length;
int top;
int a[MAX];
int *elem;}list;
int a[10];
int length=10;
list deletelist(list S,int n);
list InitList_Sq(list S);
void display();
list InitList_Sq(list S)//构造一个空的顺序表 
{
	S.elem=new int[MAX];//为顺序表分配一个大小为MAXSIZE的数组空间 
	if(!S.elem) cout<<"存储失败";//存储失败 
	S.length=0;//空表长度为零 

	return S;
}

list Creatlist(list L)
{cout<<"请依次输入编号1-10:";
	for(int i=0;i<length;i++)
	{ if(L.top<length)
	   L.top++;
	cin>>L.a[L.top];}
	return L;
}
list deletelist(list L)
{  cout<<"请输入序号N"<<endl;
L.top=-1;
int n;
   cin>>n;
  for(int i=0;i<length;i++)
	  if(n=i+1)
		{  a[i]=a[i+1];
  L.length--;}
return L;}
void display(list L)
{ cout<<"此时数组中还剩下的元素是:"<<endl;
  for(int i=0;i<1;i++)
	  cout<<a[i];}

int main()
{ list L1;
InitList_Sq(L1);
Creatlist(L1);
deletelist(L1);
display(L1);
	return 0;
}

 

#include <iostream>

using namespace std;
const int MAX=10;
typedef struct List
{
    int length;
    int top;
    int a[MAX];
    //int *elem;
} list;


void Creatlist(list &L)
int deletelist(list &S,int n);
list InitList_Sq();
void display();

list InitList_Sq()//构造一个空的顺序表
{
    list S;
    //看你下面的代码,elem根本就没用到啊
    //S.elem=new int[MAX];//为顺序表分配一个大小为MAXSIZE的数组空间
    //if(!S.elem) cout<<"存储失败";//存储失败
    S.length=0;//空表长度为零
    S.top=-1;//这里的top也要初始化。
    return S;
}

void Creatlist(list &L)//使用引用的方法传参
{
    cout<<"请依次输入编号1-10:";
    for(int i=0; i<MAX; i++)
    {
        //if(L.top<MAX)这句多余的
        L.top++;
        L.length++;//存一个数据,长度也要加1
        cin>>L.a[L.top];
    }
}
int deletelist(list &L)
{
    cout<<"请输入序号N"<<endl;
    //L.top=-1; 这里不能马上就把top-1;你都不知道删除的数据是否成功
    int n;
    cin>>n;
    //判断n和L长度的大小,不然我输入一个11,长度才10不就出问题了吗。
    if(n>L.length){
        cout<<"输入的数字超过链表长度"<<endl;
        return  -1;
    }

    //for(int i=0; i<L.length; i++)
        //if(n=i+1)
        //{
           // a[i]=a[i+1];//使用结构体中的数组,而不是另外定义一个!!
           // L.length--;
       // }

    //删除第几个应该是吧那个数删除掉,然后把后面的数据往前面移动
    for (int i=n-1;i<L.length-1;i++){
        //数组下标从0开始,所以删除
        L.a[i]=L.a[i+1];
    }
    L.length--;
    L.top--;
    return 0;
}
void display(list L)
{
    cout<<"此时数组中还剩下的元素是:"<<endl;
    for(int i=0; i<L.length; i++)
        cout<<L.a[i]<<endl;
}

int main()
{
    list L1=InitList_Sq();
    Creatlist(L1);
    deletelist(L1);
    display(L1);
    return 0;
}

简单的改了一些,仅供参考

InitList_Sq(L1);

Creatlist(L1);

deletelist(L1);

你这三个函数里面最后的return 语句是用来干什么的?也没见你使用