2.已知有线性表LB,其元素与一维数组b[]={2,6,8,9,11,15,20}元素相同, 删除顺序线性表LB中第i(1<=i<=7)个元素,并用e返回其值。
时间: 2023-05-17 10:05:10 浏览: 101
可以使用以下代码实现:
```c
int deleteElem(int *LB, int i, int *e) {
if (i < 1 || i > 7) {
return 0; // i不合法,返回0表示删除失败
}
*e = LB[i - 1]; // 将要删除的元素赋值给e
for (int j = i; j < 7; j++) {
LB[j - 1] = LB[j]; // 将后面的元素向前移动
}
return 1; // 删除成功,返回1
}
```
调用方式如下:
```c
int LB[] = {2, 6, 8, 9, 11, 15, 20};
int e;
if (deleteElem(LB, 3, &e)) {
printf("删除成功,删除的元素为:%d\n", e);
} else {
printf("删除失败,i不合法\n");
}
```
输出结果为:
```
删除成功,删除的元素为:8
```
相关问题
已知有线性表LA,其元素与一维数组a[]={3,5,8,11}元素相同,在顺序线性表LA中第i(1<=i<=5)个位置之前插入新的元素e(e的值为任意整数)。
可以使用以下代码实现:
int a[] = {3, 5, 8, 11};
int LA[5];
int i = 3; // 在第3个位置之前插入新元素
int e = 7; // 新元素的值为7
// 将a数组中的元素复制到LA数组中
for (int j = 0; j < 4; j++) {
LA[j] = a[j];
}
// 将新元素插入到LA数组中
for (int j = 4; j >= i; j--) {
LA[j] = LA[j-1];
}
LA[i-1] = e;
// 输出插入新元素后的LA数组
for (int j = 0; j < 5; j++) {
cout << LA[j] << " ";
}
cout << endl;
输出结果为:3 5 7 8 11
.顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址
是的,顺序表是用一维数组实现的线性表,数组的下标可以看成是元素的绝对地址。在顺序表中,数据元素在物理空间上是连续的,并且每个元素占用相同大小的存储空间。因此,通过元素在数组中的下标,就可以直接计算出该元素在存储空间中的地址,实现了元素的随机访问。但是,由于数组的大小是固定的,因此在使用顺序表时需要预先确定最大长度,且插入、删除元素时需要移动其他元素,效率较低。