int ListDelete_Sq(SqList& L, int i, int& e) { // 算法2.5,在顺序线性表L中删除第i个位置的元素,并用e返回其值 // i的合法值为1≤i≤L.length // 请补全代码 if (i<1 || i > L.length) return ERROR; for (int j = i - 1;j <= L.length - 2;j++) { L.elem[j] = L.elem[j + 1]; } L.length--; return OK; }
时间: 2023-06-20 10:05:28 浏览: 254
这是一个删除顺序线性表中第i个位置元素的函数,其时间复杂度为O(n)。
具体而言,该函数首先判断i是否合法,如果不合法则返回ERROR。然后从第i-1个位置开始,将每个元素往前移动一位,最后将表长减1。最后返回OK表示操作成功,并将被删除的元素的值通过e参数返回。
需要注意的是,该函数只是删除了一个元素,并没有释放其占用的空间。如果需要释放空间,可以在删除元素后调用free函数进行释放。
相关问题
帮我用c++语言完善下列函数,Status ListDelete_Sq(SqList &L, int i) // 顺序表的删除 { //此处填写代码,在顺序表L中删除第i个元素,若下标i非法,返回ERROR;删除成功,返回值为OK。 //如果删除位置非法,需输出提示"position is illegel!" } int LocateElem_Sq(SqList L, ElemType e) // 顺序表的查找 { //此处填写代码,在顺序表L中查找值为e的元素,查找成功,返回位序;查找失败,返回0。 } //第五关 Status DestroyList_Sq(SqList &L) // 销毁顺序表 { //此处填写代码,如果表L存在,输出表L的长度,释放顺序表L的数据区,销毁顺序表 }
下面是完善后的函数代码:
```c++
Status ListDelete_Sq(SqList &L, int i) {
if (i < 1 || i > L.length) { // 判断删除位置是否合法
printf("position is illegal!\n");
return ERROR;
}
for (int j = i; j < L.length; j++) { // 将i后面的元素前移
L.data[j-1] = L.data[j];
}
L.length--; // 长度减1
return OK;
}
int LocateElem_Sq(SqList L, ElemType e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i+1; // 返回位序
}
}
return 0; // 查找失败,返回0
}
Status DestroyList_Sq(SqList &L) {
if (L.length == 0) {
return ERROR;
}
printf("The length of SqList is %d\n", L.length);
free(L.data); // 释放数据区
L.length = 0; // 长度清零
return OK;
}
```
其中,`ListDelete_Sq`函数用于在顺序表中删除第i个元素,如果下标i非法,返回ERROR;删除成功,返回值为OK。如果删除位置非法,会输出提示"position is illegal!"。
`LocateElem_Sq`函数用于在顺序表中查找值为e的元素,查找成功,返回位序;查找失败,返回0。
`DestroyList_Sq`函数用于销毁顺序表,如果表L存在,会输出表L的长度,释放顺序表L的数据区,销毁顺序表。如果表L不存在或者表L已经清空,会返回ERROR。
Status ListDelete(SqList & L, int i) //算法2.5 顺序表的删除 { /****在此下面完成代码***************/ int j;
Status ListDelete(SqList & L, int i) {
// 判断删除位置是否合法
if (i < 1 || i > L.length) {
return ERROR;
}
// 将要删除的元素赋值给e
int e = L.data[i - 1];
// 将删除位置后面的元素依次向前移动
for (j = i; j < L.length; j++) {
L.data[j - 1] = L.data[j];
}
// 表长减1
L.length--;
return OK;
}
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)