请教97年高程下午第六题?s[i]=null设置为空后,就断链了,后面如何还有判断(4)s[i]!=null
某系统由 n 个部件组成,这些部件被物理地分成若干个分离的部件组。同一组内的两件部件 i 和 j,它们或直接相连,或间接相连(部件 i 和部件 j 间接相连是指在这两件部件之间有一个部件相连序列,其中部件 i 和 j 分别与这相连序列中的某个部件直接相连)。系统的 n 个部件被统一编号为 0,1,…,n-1。本程序输入所有直接相连的部件号对,分别求出系统各分离部件组中的部件号并输出。
程序根据输入的直接相连的两件部件号,建立 n 个链表,其中第 i 个链表的首指针为 s[i],其结点是与部件 i 直接相连的所有部件号。
程序依次处理各链表。在处理 s[i] 链表中,用 top 工作链表重新构造 s[i] 链表,使 s[i] 链表对应系统中的一个部件组,其中结点按部件号从小到大连结。
[程序]
.......
.......
for(i = 0;i < n; i++) /* 顺序处理各链表 */
for(top = s[i],____(1)____;top != NULL;)
//s[i]=null设置为空后,就断链了,后面如何还有判断(4)s[i]!=null
//同理s[j]也是空?????????????????????????????????
/* 在重新生成的第 i 链表中寻找当前结点的插入点 */
for(y = s[i]; ____(4)____; x = y,y = y->link);
if(y != NULL && y->data == q->data)
free(q);/*因重新生成的第i链表已有当前结点,当前结点删除* /