c顺序表遇到的地址访问冲突问题

img

 voidSeaListPushBack(SL*ps,SiDataTypex)//尾插
 JL
     assert(ps):
     if(ps->size>=ps->c                         已引发异常
                                                                       口X
          ps->a=(SiDataTy                                                                    (ps->capacity))
          ps->capacity*=2                     0x00007FF784ED1ACA处(位于seqlist326.exe中引发的异常  0xC0000005:写入位置0×0000000000000000时发生访问冲笑
                              复制详细信息启动Liveshare会话.
     if   (ps->a=NULL){
                              4异常设置
          printf(扩容失败                       引发此异常类型时中断
          exit(-1);                         从以下位置引发时除外
                                  口seqlist326.exe
                                打开异常设置编辑条件
     ps->aLps->size]
     pS->size++

void SeqListPushBack(SL* ps, SlDataType x)//尾插
{
    assert(ps);
    if (ps->size >= ps->capacity) {
        ps->a = (SlDataType*)realloc(ps->a, sizeof(SlDataType) * 2 * (ps->capacity));
        ps->capacity *= 2;
    }
    if (ps->a = NULL) {
        printf("扩容失败");
        exit(-1);

    }
    ps->a[ps->size] = x;
    
    ps->size++;
    
}

typedef int SlDataType;
typedef struct SeqList {
    SlDataType* a;
    int size;//有效数据
    int capacity;//容量
}SL;
void SeqListInit(SL* ps);//初始化
void print(SL* ps); //打印
void SeqListCheck(SL* ps);//扩容
void SeqListPushBack(SL* ps, SlDataType x);//尾插
void menu() {
    SL s;
    SeqListInit(&s);
    SeqListPushBack(&s, 1);
    SeqListPushBack(&s, 2);
    SeqListPushBack(&s, 3);
    SeqListPushBack(&s, 4);
    SeqListPushBack(&s, 5);
    print(&s);

}

int main(
)
{
    menu();
    
}

为什么会报错,运行不成功?

if(ps->a==NULL)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/354015
  • 这篇博客也不错, 你可以看下为什么会有链表?链表解决了什么问题?[C语言]
  • 除此之外, 这篇博客: 【C语言】动态内存管理中的 为什么会存在动态内存管理?? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

        int arr[10] = { 0 };

        这样创建数组不可以吗???

    答案是可以,但有缺陷。

    创建数组时需要声明数组容量的大小,表明我们已经指定了数组只能装下10个int类型的元素,在编译时就已经确定了,而有时候数组容量的大小需要在运行程序时才能知道,这样我们就考虑一下动态开辟空间吧。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^