for()循环指针出错!!!
程序代码:
int DellList(List *L,int i,STU *e){ STU *p; if(i<1||i>L->length) return 0; *e=L->Stu[i-1]; for(p=&(L->Stu[i-1]);p<&(L->Stu[L->length-1]);p++) *p=*(p++); L->length--; return 1; } //删除元素
以上是线性表中删除元素的函数,但是不正确,错误处在循环体指针步长加1,而循环条件中P又加1,导致错误,按照这个思路,提供4中改法:
程序代码:
int DellList(List *L,int i,STU *e){ STU *p; if(i<1||i>L->length) return 0; *e=L->Stu[i-1]; for(p=&(L->Stu[i-1]);p<&(L->Stu[L->length-1]);p++) *p=*(p+1); L->length--; return 1; } //删除元素
程序代码:
int DellList(List *L,int i,STU *e){ STU *p; if(i<1||i>L->length) return 0; *e=L->Stu[i-1]; for(p=&(L->Stu[i-1]);p<&(L->Stu[L->length-1]);) *p=*(p++); L->length--; return 1; } //删除元素
程序代码:
int DellList(List *L,int i,STU *e){ STU *p; if(i<1||i>L->length) return 0; *e=L->Stu[i-1]; for(p=&(L->Stu[i-1]);p<&(L->Stu[L->length-1]);p++) *p=*p++; L->length--; return 1; } //删除元素
程序代码:
int DellList(List *L,int i,STU *e){ STU *p; if(i<1||i>L->length) return 0; *e=L->Stu[i-1]; for(p=&(L->Stu[i-1]);p<&(L->Stu[L->length-1]);) *p=*p++; L->length--; return 1; } //删除元素
但是只有第一种有效,问题在于其他的为是么没有作用???