静态链表 看不懂啊~~~~~~
#include <stdio.h>
#define MAXSIZE 1000
typedef struct
{
int data;
int cur;
}component,SLinkList[MAXSIZE];
void InitSpace(SLinkList &space) //初始化
{
//将一维数组space中各分量链成一个备用链表,space[0].cur为头指针,"0"表示空指针。
int i;
for(i=0;i <MAXSIZE-1;++i) space[i].cur = i + 1;
space[MAXSIZE-1].cur = 0;
}
int Malloc(SLinkList &space)
{
//若备用空间链表非空,则返回分配的结点下标,否则返回0
int i;
i = space[0].cur;
if(space[0].cur) space[0].cur = space[i].cur; //相当于逐渐向前移
return i;
}
void Free(SLinkList &space,int k)
{
//将下标为k的空闲结点回收到备用链表
space[k].cur = space[0].cur;
space[0]->cur = k;
}
void difference(SLinkList &space)
{
//依次输入集合A和B的元素,在一维数组space中建立表示集合(A-B)U(B-A)
//的静态链表,S为头指针,假设备用空间足够大,space[0].cur为其头指针。
InitSpace(space); //初始化备用空间
s = Malloc(space); //生成S的头结点
r = s; //r指向s的当前最后结点 r取得第一个位置
printf("please enter A and B elements\n");
scanf("%d,%d",&m,&n); //输入A和B的元素个数
for(j=1;j <=m;++j) //建立集合A的链表
{
i = Malloc(space); //分配结点 i取得第二个位置
scanf("%d",&space[i]->data);//输入A元素值
space[r].cur = i; //插入到结尾
r = i;
}
space[r]->cur = 0; //尾结点指针为空
我看不懂这个for循环。分配节点,调用Malloc(space)是 每次从备用空间里取开头的节点?输入值后。
然后是把上一次插入的节点 链接 到这次分配的这个节点?
}
[解决办法]
注释写的很清楚了,还不明白什么,自己一步步调试看结果
[解决办法]