顺序表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 语句是用来干什么的?也没见你使用