int InitList(SqList &L)
{
L.elem = (char *)malloc(LIST_INIT_SIZE*sizeof(char));//动态分配了可以存放100个元素的内存空间,并将首地址赋值给指针变量elem;
if(!L.elem)//表示的是内存分配失败
exit(OVERFLOW);
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return OK;
}
int main(void)
{
int y;
SqList L;
y = InitList(L);
printf("y=%d",y);
return 0;
}
//个人看法:这种线性表的初始化就是按照结构题的知识找到elem,以及指针将数据放入一段连续的elem为首地址的内存空间中;
int ListInsert(SqList &L,int i,char e)
{
if (i<1||i>L.length)
return -1;
char * newbase;
char *p ,*q;
if(L.length >= L.listsize)//就是比较的是顺序表中存储的数是否达到这个线性表的最大值
{
newbase = (char *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(char));//相当于又在原有100个存储单位上有添加了10个存储单位的大小
if(!newbase)
exit(OVERFLOW);
L.elem = newbase;
L.listsize+=LISTINCREMENT;
}
q = &(L.elem[i-1]);//q为第i个元素
for (p = &(L.elem[L.length-1]);p>=q;p--)
*(p+1) = *p;
*q = e;
L.length ++;
return OK;
}
原文:https://www.cnblogs.com/zqit/p/13697413.html