(1997年试题5)部件组的问题?

ccz790711 2003-10-11 02:07:21
阅读以下程序说明和C程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
某系统由n个部件组成,这些部件被物理地分成若干个分离的部件组。同一组内的
两个部件i和j,它们或直接组连,或间接相连(部件i和部件j间接相连是指在这两件部件之间有一个部件相连序列,其中部件i和j分别与这相连序列中的某个部件直接相连)。系统的n个部件被统一编号为0,1,…,n-1。本程序输入所有直接相连的部件号对,分别求出系统各分离部件组中的部件号并输出。
程序根据输入的直接相连的两个部件号,建立n个链表,其中第i个链表的首指针为s[i],其结点是与部件号i直接相连的所有部件号。
程序按下述方法顺序处理各链表。设处理第i个链表,将该链表移至由指针top所指的工作链表。对top链表的各结点作如下处理:从top链表上取出一个结点,根据该结点所指出的相连部件j,将第j个链表也移入top链表中,并将所取出的结点按部件号从小到大的顺序重新构造第i个链表(该链表中只保留不相同的结点),如此重复,直至top链表为空,第i个链表的重新构造也结束。所有链表处理完毕后,重新构造好的各非空链表即对应系统中的一个部件组。
[程序]
# include <stdio.h>
# define N 100
typedef struct node {
int data;
struct node *link;
} NODE;
NODE *s[N];
int i, j, n, t;
NODE *q,*p,*x,*y,*top;
main()
{ printf(“Enter number of prarts.”);
scanf(“%d”,&n);
for(i=0;i<n;i++) s[i]=NULL
printf(“Enter pairs.\n”);
while(scanf(“%d%d”,&i,&j)= =2)
{ /*输入相连部件对,生成相连部件结点结点链表*/
p=(NODE*)malloc(sizeof(NODE));
p→data=j; p→link=s[i];s[i]=p
p=(NODE*)malloc(sizeof(NODE));
p→data=i;p→link=s[j];s[j]=p;
}
for(i=0;i<n;i++) /*顺序处理各链表*/
for(top=s[i],s[i]=NULL;____(1)____;)
{ /*将第i链表移入top工作链表,并顺序处理工作链表的各结点 */
q=top;____(2)____;
if(s[j=q→data]!=NULL)
{ /*将j链表也移入工作链表*/
for(p=s[j];____(3)____;p=p→link);
p→link=top; top=s[j];____(4)____;
}
/*在重新生成的第i链表中寻找当前结点的插入点*/
for(y=s[i];____(5)____;x=y,y=y→link);
if (y!=NULL && y→data= = q→data)
free(q);/*因重新生成的第i链表已有当前结点,当前结点删除*/
else { /*当前结点插入新生成的第i链表*/
____(6)____;
if (____(7)____) s[i]=q;
else x→link=q;
}
}
for(i=0;i<n;i++) /*输出结果*/
{ if (s[i]= = NULL) continue;
for(p=s[i];p!=NULL;)
{ printf(“\t%d”,p→data);
q=p→link;free(p);p=q;
}
printf(“\n”);
}
}
*******************************************
在下很拙,但在下很认真!!!
祝各位考试顺利通过!!
...全文
45 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccz790711 2003-10-11
  • 打赏
  • 举报
回复
答案在这:
⑴ top!=NULL ⑵ top=top→link ⑶ p→link!=NULL
⑷ s[j]=NULL ⑸ y!=NULL && y→data<q→data\=
⑹ q→link=y ⑺ y= =s[i]
coolstar14 2003-10-11
  • 打赏
  • 举报
回复
答案呢,我记得辅导材料中有这个题,但书不在这儿,哪位有讲一下吧!

2,959

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧