- 注册时间
- 2005-11-2
- 最后登录
- 2022-4-27
⑥精研
....
- 积分
- 1766
|
发表于 2007-6-8 16:53:36
|
显示全部楼层
出现这种原因是,p->size = 2时,
for(j=i-1;j<p->size-1;j++)
{
p->list1[j]=p->list1[j+1];
}
p->size--;
这句相当于for( j=1; j<1; j++ ){ ... }该循环内部没有正常执行.
所以,stack没有进行前移操作(p->list1[j]=p->list1[j+1];这句没执行),
而后面的p->size--却执行了;
这就出现一个奇怪的现象,list1[]中明明有两个数据,而p->size却为1.
所以在最后那个display(&l);时,仅仅按照内部的
if(p->size==1)
printf("%c",p->list1[p->size]);
这句执行了,所以我们看到的是b,然而实际上p->list1[]中还是两个char数据,'a'和'b'都在,
所以,楼主您的问题有误,a并没有被删除.
这样一来,如何去修改的话,您自己可以参考,既然是del中的for循环错误.(适用性有限),再完善它就OK了. |
|