顺序表的修改操作
一、数据修改
操作的步骤:
1)判断顺序表是否为空,如果没有数据,操作失败;
2)判断修改位置是否合理,不合理则操作失败;
3)将i位置中的数据修改成最新值。
int update(SQL_LIST *L, int i, ElementType e)
{// 判断是否是空表,如果空,操作失败if (L->length == 0){return 0;}// 判断修改的位置是否合理if (i < 1 || i > L->length){return 0;}// 将指定位置的元素修改为eL->data[i - 1] = e;return 1;
}int main()
{// 定义顺序表SQL_LIST list;// 对顺序表进行初始化init_list(&list);// 插入元素insert(&list, 1, 1);insert(&list, 2, 3);insert(&list, 3, 5);insert(&list, 4, 7);insert(&list, 5, 9);// 删除数据update(&list, 5, 99);// 展示顺序表show(&list);return 0;
}
二、完整代码
#include <stdio.h>#define MAX_SIZA 100
typedef int ElementType;typedef struct _sql_list {ElementType data[MAX_SIZA];int length;
} SQL_LIST; // 初始化函数
void init_list(SQL_LIST *L) {L->length = 0;
} // 判断是否为空表
int is_empty(SQL_LIST *L) {return L->length == 0;
}// 遍历顺序表
void show(SQL_LIST *L) {int i;for (i = 0; i < L->length; i++) {printf("%d", L->data[i]);if (i < L->length-1) {printf(", ");}else {printf("\n");}}
}// 插入数据
int insert(SQL_LIST* L, int i, ElementType e) {int j;// 判断顺序表是否已满,如果满了,操作失败if (L->length == MAX_SIZA) {return 0;}// 判断插入位置是否合理,如果不合理,操作失败if (i < 1 || i > L->length + 1) {return 0;}// 从最后一个元素开始向前到出入位置,将元素后移for (j = L->length - 1; j >= i - 1; j--) {L->data[j + 1] = L->data[j];}// 将e填入第i-1个位置L->data[i - 1] = e;// 顺序表长度加1L->length++;return 1;
}// 修改数据
int update(SQL_LIST *L, int i, ElementType e)
{// 判断是否是空表,如果空,操作失败if (is_empty(L)){return 0;}// 判断修改的位置是否合理if (i < 1 || i > L->length){return 0;}// 将指定位置的元素修改为eL->data[i - 1] = e;return 1;
}int main() {// 定义顺序表SQL_LIST list;// 对顺序表进行初始化init_list(&list);// 插入元素insert(&list, 1, 1);insert(&list, 2, 3);insert(&list, 3, 5);insert(&list, 4, 7);insert(&list, 5, 9);// 修改元素update(&list, 1, 0);// 展示顺序表show(&list);return 0;
}