在一个顺序表上同时实现插入和删除的算法。
时间: 2024-03-24 13:40:40 浏览: 14
顺序表上同时实现插入和删除的算法:
```c
#define MAXSIZE 100 // 定义顺序表的最大长度
void insertOrDeleteElem(int* list, int pos, int val, int* length, int flag){
if(pos < 1 || pos > *length + 1){
printf("Invalid position!\n");
return;
}
if(*length == MAXSIZE && flag == 1){
printf("The list is full!\n");
return;
}
if(*length == 0 && flag == 0){
printf("The list is empty!\n");
return;
}
if(flag == 1){ // 插入操作
for(int i = *length; i >= pos; i--){
list[i] = list[i-1];
}
list[pos-1] = val;
(*length)++;
}
else{ // 删除操作
for(int i = pos-1; i < *length-1; i++){
list[i] = list[i+1];
}
(*length)--;
}
}
```
其中,`list`为顺序表数组指针,`pos`为要插入或删除的位置,`val`为要插入的值,`length`为顺序表当前长度的指针,`flag`为操作类型标识,1表示插入操作,0表示删除操作。