|
发表于 2025-4-11 01:11:57
|
显示全部楼层
顺序表删除操作代码修正
你提供的代码存在几个关键问题,修正后的代码如下:
- #include <stdio.h> // 补全头文件
- #define MaxSize 10
- typedef struct {
- int data[MaxSize]; // 修正:这里应该定义数组
- int length;
- } SqList;
- bool ListDelete(SqList &L, int i, int &e) {
- if (i < 1 || i > L.length) { // 修正判断条件
- return false;
- }
- e = L.data[i-1]; // 修正:获取被删除元素
-
- // 删除位置后的元素前移
- for (int j = i; j < L.length; j++) { // 修正循环条件
- L.data[j-1] = L.data[j];
- }
-
- L.length--; // 表长减1
- return true;
- }
复制代码
主要修正点说明:
- 原代码缺少数组定义,结构体中的 int data 应改为 int data[MaxSize]
- 删除位置判断条件错误,正确范围应为 i < 1 || i > L.length
- 元素前移时,原代码循环条件应改为 j < L.length
- 被删除元素赋值应使用 L.data[i-1](数组下标从0开始)
使用示例:
- int main() {
- SqList list = {{1,2,3,4,5}, 5}; // 初始化顺序表
- int deleted_value;
-
- if (ListDelete(list, 3, deleted_value)) {
- printf("删除成功,被删除元素:%d", deleted_value);
- } else {
- printf("删除失败");
- }
- return 0;
- }
复制代码
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|