|
楼主 |
发表于 2006-9-22 10:19:48
|
显示全部楼层
Post by Lolita
(1). int *p;
*p=1;
这是错的。又没有为p分配合适的空间,怎么能解引用p?
- int main()
- {
- List *L;
- int i,j=10,*e;
- *e=1;
- //e=(int *)malloc(sizeof(int));
- InitList(L);
- for(i=1;i<=10;i++,j--)
- ListInsert(L,1,j);
- printf("顺序表的元素为:\n");
- for(i=0;i<L->length;i++)
- printf("%4d",L->elem[i]);
- printf("\n");
- printf("输入你想删除的元素位置(10以内的整数):\n");
- scanf("%d",&i);
- ListDel(L,i,e);
- printf("你删除的元素是第%d个元素,值为%d。\n",i,*e);
- printf("现在的顺序表为:\n");
- for(i=0;i<L->length;i++)
- printf("%4d",L->elem[i]);
- printf("\n");
- return OK;
- }
复制代码
我编译和运行第1次结果都是真确的啊,但是第2次出现
- cho@cho:~$ ./list
- 顺序表的元素为:
- 1 2 3 4 5 6 7 8 9 10
- 输入你想删除的元素位置(10以内的整数):
- 4
- 你删除的元素是第4个元素,值为4。
- 现在的顺序表为:
- 1 2 3 5 6 7 8 9 10
- cho@cho:~$ ./list
- 顺序表的元素为:
- 1 2 3 4 5 6 7 8 9 10
- 输入你想删除的元素位置(10以内的整数):
- 7
- 你删除的元素是第7个元素,值为7。
- 现在的顺序表为:
- 1 2 3 4 5 6 8 9 10
- 6821:
- 6821: calling fini: /lib/tls/i686/cmov/libc.so.6 [0]
- 6821:
复制代码
这个就是没分配合适的空间造成的吗?
为什么第1次不出现问题,而再运行1次就会出现了,想知道其具体原因
我是初学者,希望大家能耐心指教下,呵呵~ |
|