- 论坛徽章:
- 0
|
我的代码如下,这段代码是自己对照《数据结构与算法C语言版》中的算法自己用C实现的联系程序。下面的代码是实现顺序表的片断:
问题在main中
main 函数如下:
void main(){
int i,t ;
SqList L;
if(!InitList(L))exit(ERROR);
printf("请输入数字,默认为5个\n");
for(i =1;i <= 5; i++){
int z[5] ;
scanf("%d",z[i-1]);
if (!ListInsert(L,i,z[i-1]))exit(ERROR);
}
}
其中用到的2个函数 InitList,和 ListInsert 代码如下:
InitList:
//构造一个空表
typedef int Status;
Status InitList(SqList &L) {
L.elem = (ElemType *) malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L.elem)exit(OVERFLOW);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return OK;
}
ListInsert:
typedef int ElemType;
//在指定位置插入元素
Status ListInsert(SqList &L,int i,ElemType e){
ElemType *p,*q,*newbase;
if(i <1 || i > L.length +1)return(ERROR);
if(L.length >= L.listsize){
newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)exit(OVERFLOW);
L.elem = newbase;
L.listsize += LISTINCREMENT;
}
q = &(L.elem[i -1]);
for(p = &(L.elem[L.length -1]);p >= q; --p) *(p+1) = *p;
*q = e ;
++L.length;
return OK;
}
现在的问题是在main中的for
for(i =0;i < 5; i++){
int z[5] ;
scanf("%d",z[i]);
if (!ListInsert(L,i,z[i]))exit(ERROR);
}
运行时报
0X 某某内存引用了“0XCCCCCCCC”内存,该内存不能为“written"
这是什么问题啊?
[[i] 本帖最后由 Northwindrocker 于 2007-1-4 19:52 编辑 [/i]] |
|