风&雨 2022-02-17 21:16 采纳率: 100%
浏览 21
已结题

线性表插入操作,查错问题

该线性表插入操作未报错,但是不能插入数据,程序运行没问题

#include<stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;

//动态存储方式
#define LIST_INIT_SIZE 100
#define LIST_INCREMENT 10
typedef int ElemType;
typedef struct {
    ElemType *elem;//存储空间地址
    int length;//当前长度
    int listsize;//当前分配的存储容量
} SqList;

Status InitList_Sq(SqList &L) {
    L.elem = (ElemType*)malloc(LIST_INIT_SIZE);
    if (!L.elem)return ERROR;
    L.length = 0;
    L.listsize = LIST_INIT_SIZE;
    return OK;
}

Status ListInsert_Sq(SqList &L, int i, ElemType e) {
    ElemType *p;
    if (i < 1 || i > L.length)
        return ERROR;
    if (L.length >= L.listsize) {
        ElemType *newbace = (ElemType*)realloc(L.elem, (L.listsize + LIST_INCREMENT) * sizeof(ElemType));
        if (!newbace)
            return ERROR;
        L.elem = newbace;
        L.listsize += LIST_INCREMENT;
    }
    ElemType *q = &(L.elem[i - 1]);
    for (p = &(L.elem[L.length - 1]); p >= q; --p) {
        *(p + 1) = *p; //元素后移
    }
    *q = e;
    ++L.length;
    return OK;
}

void disList(SqList L) {
    for (int i = 1; i <= L.length; i++) {
        printf("%d ", L.elem[i - 1]);
    }
    printf("\n");
}

int main() {
    int a[8] = {1, 2, 3, 4, 5, 100, 200, 300};
    int i, j, e = 586;
    SqList List;
    InitList_Sq(List);
    for (i = 1, j = 0; i <= 8; i++, j++)
        ListInsert_Sq(List, i, a[j]);
    printf("\n初始元素序列\n");
    disList(List);
    ListInsert_Sq(List, 3, e);
    printf("\n插入e元素后的元素序列\n");
    disList(List);
    return 0;
}

img


上图是运行结果,刚学,不懂为啥这样,知道原因的朋友欢迎指错,感谢您。

  • 写回答

1条回答 默认 最新

  • [PE]经典八炮 2022-02-17 21:37
    关注

    你第一次插入的时候,i就大于了L.length,不直接返回ERROR了吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月18日
  • 已采纳回答 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 使用yolov5-7.0目标检测报错
  • ¥15 对于这个问题的解释说明
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备