设顺序表L有100个元素,请用C编写算法,实现以下的功能。 (1)在第51号位置上插入一个新元素x。 (2)删除第25号位置上的元素。
时间: 2024-09-15 13:06:57 浏览: 37
在C语言中,我们可以使用数组来表示顺序表,并通过索引来访问和操作元素。这里是一个简单的示例来实现这两个功能:
```c
#include <stdio.h>
#define SIZE 100
// 定义顺序表结构体
typedef struct {
int data[SIZE]; // 存储数据
int length; // 表的实际长度
} SeqList;
// 插入元素
void insert(SeqList* list, int index, int x) {
if (index >= list->length) {
printf("Error: Index out of range.\n");
return;
}
// 将所有元素向右移动一位,腾出空间
for (int i = list->length - 1; i > index; i--) {
list->data[i] = list->data[i - 1];
}
// 插入新元素
list->data[index] = x;
list->length++;
}
// 删除元素
void delete(SeqList* list, int index) {
if (index >= list->length || index < 0) {
printf("Error: Invalid index.\n");
return;
}
// 如果要删除的是第一个元素,只需将第二个元素移到第一个
if (index == 0) {
list->data[0] = list->data[1];
} else {
// 否则,从第二个元素开始,将所有元素向左移动一位
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
}
// 减少长度
list->length--;
}
int main() {
SeqList L = { {0}, 0 }; // 初始化一个空列表
// 插入元素
insert(&L, 50, 42); // 在第51号位置插入元素x,因为索引从0开始计数,实际位置是50
printf("After inserting: \n");
// 打印列表
for (int i = 0; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
// 删除元素
delete(&L, 24); // 在第25号位置删除元素
printf("After deleting: \n");
// 再次打印列表
for (int i = 0; i <= L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
return 0;
}
```
请注意,这个程序假设输入的索引都是有效的。实际应用中,你可能需要添加错误检查和边界条件处理。
阅读全文