在上题的顺序线性表LB中查找第1个与 e(e值任意整数) 相等的元素位置,找到返回其在LB中的位序,否则返回0。
时间: 2023-05-17 15:05:16 浏览: 57
这个问题可以使用线性查找算法来解决,具体实现如下:
int search(int LB[], int n, int e) {
for (int i = 0; i < n; i++) {
if (LB[i] == e) {
return i + 1;
}
}
return 0;
}
其中,LB是顺序线性表,n是LB中元素的个数,e是要查找的元素值。如果找到了与e相等的元素,则返回其在LB中的位序,否则返回0。
相关问题
2.已知有线性表LB,其元素与一维数组b[]={2,6,8,9,11,15,20}元素相同, 删除顺序线性表LB中第i(1<=i<=7)个元素,并用e返回其值。
可以使用以下代码实现:
```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
```
将所有在线性表lb中但不在la中的数据元素插入到la中
可以使用循环遍历线性表lb中的每个元素,判断该元素是否在la中出现过,如果没有出现过,则将该元素插入到la的末尾。
具体实现可以参考以下代码:
for(int i=0; i<lb.length(); i++){
if(!la.contains(lb.get(i))){
la.add(lb.get(i));
}
}
其中,la.contains(x)表示判断线性表la中是否包含元素x,la.add(x)表示将元素x插入到线性表la的末尾。