读书人

顺序表插入遇到一点麻烦.该怎么解决

发布时间: 2012-02-25 10:01:49 作者: rapoo

顺序表插入遇到一点麻烦...
typedef struct // 定义结构体
{
int *elem;
int length;
int listsize;
}SqList;

void initlist(SqList &L) //初试化操作
{
L.elem = (int*)malloc(10*sizeof(ElemType));
if(!L.elem)
exit(0);
L.length = 0 ;
L.listsize = 10 ;

}


Status ListInsert(SqList &L,int i,ElemType e) // 插入
{
ElemType *newbase,*p,*q;
if(i <1||i> L.length+1)
{
return 0;
}


q=L.elem+i-1;
for(p=L.elem+L.length-1;p> =q;--p)
*(p+1)=*p;
*q=e;
++L.length;

return 1;
}

main()
{
SqList M;
initlist(M);
ListInsert(M,1,1);//将1插入到第一个位置
printf( "*M.elem=%d ",*(M.elem+1));
}


我的问题是显示的结果是 *M.elem=-842150451
这是什么问题啊?




[解决办法]
void initlist(SqList &L) //初试化操作
Status ListInsert(SqList &L,int i,ElemType e) // 插入

如果你写的是C那上面这种写法都是错的
如果你想做接受地址传值,就改成*L
[解决办法]

SqList M;
initlist(M);//错误
ListInsert(M,1,1);//将1插入到第一个位置//错误
printf( "*M.elem=%d ",*(M.elem+1));//错误

[解决办法]
*(M.elem+1)越界了!!

读书人网 >C语言

热点推荐