帮忙看看哪错了写入位置发生访问冲突
- C/C++ code
#include<stdio.h>#include<stdlib.h>#include<conio.h>#define LIST_INIT_SIZE 30#define OK 1#define ERROR -1typedef char ElemType;typedef int Status;typedef struct{ ElemType *elem; int length; int listsize;}SqList;Status InitList(SqList * L) //构造一个空的线性表{ L->elem=(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType)); if(!L->elem) {printf("内存分配失败\n");exit(OVERFLOW);} L->length=L->listsize=LIST_INIT_SIZE; printf("内存分配成功\n\n"); return OK;}Status ValueGiven(SqList *L) //线性表赋值{ for(int i=0;i<LIST_INIT_SIZE-2;i++) L->elem[i]=i; return OK;}Status ListInsert(SqList * L,int i,ElemType e) //在顺序线性表L中的第i个位置之前插入新的元素e{ int *q=NULL,*p=NULL; if ( i<0 || i>L->length ) return ERROR; *q=L->elem[i-1]; //显示0x00881672 处有未经处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突 for(*p=L->elem[LIST_INIT_SIZE-3];p>=q;--p) *(p+1)=*p; *q=e; ++L->length; return OK;}麻烦看看哪出错了?都快搞晕了,我已经给表赋值了,1-29。可是进行到上面那句时出错了。。。
[解决办法]
当然你的赋值函数也要改。。。汗
- C/C++ code
Status ValueGiven(SqList *L) //线性表赋值{ for(int i=0;i<LIST_INIT_SIZE-2;i++) L->elem[i]=i; l->length = LIST_INIT_SIZE-2; return OK;}
[解决办法]
F10进入单步调试 F11进入函数 记得观察局部变量 和 内存