顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1、从键盘输入10个整数,产生顺序表,并输出结点值; 2、从键盘输入1个整数,在顺序表中查找该结点。若找到,输出结点的位置;若找不到,则显示“找不到”; 3、从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果; 4、从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。
时间: 2024-02-15 10:01:50 浏览: 94
好的,我知道了你的要求,下面是算法实现:
1. 产生顺序表并输出结点值:
```
#define MAXSIZE 10 // 定义顺序表的最大长度为10
typedef struct {
int data[MAXSIZE]; // 存放数据元素的数组
int length; // 记录当前顺序表的长度
} SqList;
void createList(SqList &L) {
printf("请输入10个整数:\n");
for (int i = 0; i < MAXSIZE; i++) {
scanf("%d", &L.data[i]);
}
L.length = MAXSIZE;
printf("产生的顺序表为:\n");
for (int i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
```
2. 查找结点:
```
int search(SqList L, int x) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == x) {
return i;
}
}
return -1;
}
```
3. 插入结点:
```
bool insert(SqList &L, int i, int x) {
if (i < 1 || i > L.length+1 || L.length == MAXSIZE) {
return false;
}
for (int j = L.length; j >= i; j--) { // 从后往前移动元素
L.data[j] = L.data[j-1];
}
L.data[i-1] = x; // 插入新元素
L.length++; // 长度加1
return true;
}
```
4. 删除结点:
```
bool del(SqList &L, int i) {
if (i < 1 || i > L.length) {
return false;
}
for (int j = i; j < L.length; j++) { // 从前往后移动元素
L.data[j-1] = L.data[j];
}
L.length--; // 长度减1
return true;
}
```
完整代码如下:
阅读全文