顺序表定义如下,分别写出在顺序表中第i个位置插入数据元素e和删除数据元素e的算法。 Typedef struct{ ElemType *elem; int length; int listsize; }SqList; bool ListInsert(SqList &L, int i, ElemType e){ bool ListDelete(SqList &L, int i, ElemType &e){
时间: 2024-02-22 10:58:09 浏览: 109
在顺序表中第i个位置插入数据元素e的算法如下:
```
bool ListInsert(SqList &L, int i, ElemType e){
if (i < 1 || i > L.length + 1 || L.length == L.listsize)
return false; // 插入位置不合法或者顺序表已满
for (int j = L.length; j >= i; j--)
L.elem[j] = L.elem[j-1]; // 数据元素后移
L.elem[i-1] = e; // 插入数据元素
L.length++; // 长度加1
return true;
}
```
删除顺序表中第i个位置的数据元素e的算法如下:
```
bool ListDelete(SqList &L, int i, ElemType &e){
if (i < 1 || i > L.length)
return false; // 删除位置不合法
e = L.elem[i-1]; // 保存被删除的元素
for (int j = i; j < L.length; j++)
L.elem[j-1] = L.elem[j]; // 数据元素前移
L.length--; // 长度减1
return true;
}
```
其中,`SqList`是顺序表的结构体类型,`ElemType`是数据元素类型,`L.elem`是存储数据元素的数组指针,`L.length`是顺序表的当前长度,`L.listsize`是顺序表的最大长度。
阅读全文