bool ListDelete(SeqList *L,int i,ElemType *e){ if(i<1||i>L->length) return false; int b=0; b=L->data[i-1]; e=&b; int j=0; for( j=i;j<L->length;j++) L->data[j-1]=L->data[j]; L->length--; return true; }
时间: 2024-04-12 08:33:29 浏览: 80
booll cmp(int a,int b) { return a>b; }
5星 · 资源好评率100%
这段代码是用于删除顺序表中指定位置的元素的函数。首先,它会检查要删除的位置i是否合法,即是否小于1或大于顺序表的长度。如果位置不合法,则返回false表示删除失败。然后,它会声明一个整型变量b,并将要删除的元素的值赋给b,即b = L->data[i-1]。接着,它将b的地址赋给指针e,即e = &b,这样可以通过指针e将删除的元素值传递给调用者。然后,它使用循环将位置i后面的所有元素向前移动一位,将第j个元素的值赋给第j-1个元素,覆盖掉要删除的元素。最后,它将顺序表的长度减1,并返回true表示删除成功。需要注意的是,该代码存在一个问题,即在函数结束后,指针e指向的内存空间会被释放,导致调用者无法正确获取删除的元素值。应该将参数e改为指针类型,即ElemType **e,然后使用 *e = b 的形式进行赋值。
阅读全文