数据结构
#include "stdio.h"#include "stdlib.h"
#include "conio.h"
#define chushi 10
typedef struct list{
int length;
int listsize;
int *elem;
}xin;
void chuangjian(xin *p)
{p->elem=(int *)malloc(chushi*sizeof(int));
if(!p->elem)exit(0);
p->length=0;
p->listsize=chushi;
}
void fuzhi(xin *p,int i,int item)
{int *base,*q,*insertptr;
if(i<1||i>p->length+1)exit(0);
if(p->length>=p->listsize)
{base=(int *)realloc(p->elem,(p->listsize+10)*sizeof(int));
if(!base)exit(0);
p->elem=base;
p->listsize+=10;}
insertptr=&(p->elem[i-1]);
for(q=&(p->elem[p->length-1]);q>=insertptr;q--)
*(q+1)=*q;
*insertptr=item;
p->length++;
}
void main()
{int i;
xin k;
chuangjian(&k);
for(i=0;i<15;i++)
fuzhi(&k,i+1,i+1);
for(i=0;i<k.length;i++)
printf("%d",k.elem[i]);
}
大神帮我解释一下for(q=&(p->elem[p->length-1]);q>=insertptr;q--),是不是第一次进入该函数时(即i=1),p->length-1是等于-1,这样没有出错吗?
这样说明数组的括号里面【可以使负数】。