哪位高手请帮我改一下,这个程序没有错误,但运行不出来,谢谢了!
#include<iostream>#define M 100
#define N 10
using namespace std;
typedef struct LNode{
int *elem;
int length;//当前长度
int listsize;//当前分配的存储容量
}sqList;
struct LNode *InitList_sq(sqList *l);//新建顺序表L
void GetElem_sq(sqList *l,int i,int e);//查找
void ListInsert_sq(sqList *l,int i,int e);//插入
int ListDelete_sq(sqList *l,int i,int e);//删除
int main ()
{
int x,k,y,e;
struct LNode *L;
L=NULL;
L=InitList_sq(L);//新建顺序表L
for(int c=0;x!=' ';c++){ //初始化
cin>>x;
L->elem[c+1]=x;
}
cin>>k;
if(k<1||k>M) exit (0);
GetElem_sq(L,k,e);//查找
ListInsert_sq(L,k, e);//插入
for(int j=0;j<M+1;j++){
cout<<L->elem[j+1]<<" ";
cout<<endl;
}
y=ListDelete_sq(L,k, e);//删除
cout<<y<<endl;
for(int f=0;f<M;f++){
cout<<L->elem[f+1]<<" ";
cout<<endl;
}
return 0;
}
struct LNode *InitList_sq(sqList *l) //构造空的L
{
l->elem=(int*)malloc(M *sizeof(int));
if(!l->elem) exit (0);
l->length=0;
l->listsize=M;
return l;
}
void GetElem_sq(sqList *l,int i,int e) //查找,用e返回L中第a个元素的值
{
struct LNode *p;
p=l;
if(!p->elem) exit (0);
for( int j=0;j<i;j++)
p->elem[j+1];
e=p->elem[j+1];
cout<<e<<endl;
}
void ListInsert_sq(sqList *l,int i,int e) //在L中第a个位置之前插入新的元素数据e,L的长度加1
{
int *q,*p,*s,j=1;
//q=L.elem;
if(i<1||i>l->length+1) exit (0);
if(l->length>=l->listsize){
s=(int*)realloc(l->elem,(l->listsize+N)*sizeof(int));
if(!s) exit(0);
l->elem=s;
l->listsize+=N;
q=&(l->elem[i-1]);
for(p=&(l->elem[l->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
l->length++;
//return l;
}
}
int ListDelete_sq(sqList *l,int i,int e) //删除L的第a个数据元素,并用e返回其值,L的长度减1
{
int *q,*p,j=0;
if((i<1)||(i>l->length)) exit (0);
q=&(l->elem[i-1]);
e=*q;
//cout<<e<<endl;
p=l->elem+l->length-1;
for(++q;q<=p;++q)
*(q-1)=*q;
free(q);
l->length--; //L 长度减一
return e;
}