想问问代码中的加粗的部分L->node[p].next是实现什么的,initiate函数中不是已经赋值为-2了吗
typedef struct
{
DataType data;
int next;
} Stlisttype;
typedef struct
{
Stlisttype node[MaxSize];
int head;
}StLick;
void ListInitiate(StLick *L)
{
int i;
L->head=0;
for(i=0;i<MaxSize;i++)
{
L->node[i].next=-2;
}
L->node[L->head].next=-1; //只有头结点的next值为-1
}
int ListLength(StLick L)
{
int size=0;
int p=L.head;
while(L.node[p].next!=-1)
{
p=L.node[p].next;
size++;
}
return size;
}
int ListInsert(StLick *L,int i,DataType x)
{
int k,j=-1;
int p=L->head;
while (L->node[p].next!=-1&&j<i-1)
{
p=L->node[p].next; //p用来指向第i-1个结点
j++;
}
if(j!=i-1)
{
printf("\n 插入位置参数出错!");
return 0;
}
for(k=0;k<MaxSize;k++)
{
if(L->node[k].next==-2) //寻找第一个可用结点
{
L->node[k].next=L->node[p].next;
L->node[p].next=k;
L->node[k].data=x;
break;
}
}
if (k==MaxSize)
{
printf("链表已满,无法插入!");
return 0;
}
return 1;
}