阅读以下说明和C程序,填充函数中的空缺。 [说明] N个游戏者围成一圈,从1~N顺序编号,游戏方式如下;从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。 下面的函数playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N个人围成的圈用一个包含N个结点的单循环链表来表示,如图1所示,游戏者的编号放在结点的数据域中。
在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量c(初值为1)用于计数,指针变量p的初始值为。head(如图1所示)。游戏时,从p所指向的结点开始计数,p沿链表中的指针方向遍历结点,c的值随p的移动相应地递增。当c计数到2时,就删除p所指结点的下一个结点(因下一个结点就表示报数到3的游戏者),如图2所示,然后将c设置为0后继续游戏过程。
结点类型定义如下: typedef struct node( int code; /*游戏者的编号*/ struet node *next; NODE, *LinkList; [C函数] int playing(LinkList head,int n) /*head指向含有n个结点的循环单链表的第一个结点(即编号为1的游戏者)*/ LinkList p=head,q; int thewinner,c=1; while(n>______) if(c==2) /*当c等于2时,P所指向结点的后继即为将被删除的结点*/ q=p->next; p->next=______; printf("%d/t",q->code); /*输出退出圈子的游戏者编号*/ free(q); c=______; n--; /*if*/ p=______; c++; /*while*/ theWinner=______; free(p); return theWinner; /*返回最后一个游戏者(即获胜者)的编号*/
题库:初级程序员
类型:填空题
时间:2021-07-10 11:18:01
免费下载:《填空集》Word试卷
阅读以下说明和C程序,填充函数中的空缺。 [说明] N个游戏者围成一圈,从1~N顺序编号,游戏方式如下;从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,直到剩余一个游戏者为止,该游戏者即为获胜者。 下面的函数playing(Linklist head)模拟上述游戏过程并返回获胜者的编号。其中,N个人围成的圈用一个包含N个结点的单循环链表来表示,如图1所示,游戏者的编号放在结点的数据域中。
在函数中,以删除结点来模拟游戏者退出圈子的处理。整型变量c(初值为1)用于计数,指针变量p的初始值为。head(如图1所示)。游戏时,从p所指向的结点开始计数,p沿链表中的指针方向遍历结点,c的值随p的移动相应地递增。当c计数到2时,就删除p所指结点的下一个结点(因下一个结点就表示报数到3的游戏者),如图2所示,然后将c设置为0后继续游戏过程。
结点类型定义如下: typedef struct node( int code; /*游戏者的编号*/ struet node *next; NODE, *LinkList; [C函数] int playing(LinkList head,int n) /*head指向含有n个结点的循环单链表的第一个结点(即编号为1的游戏者)*/ LinkList p=head,q; int thewinner,c=1; while(n>______) if(c==2) /*当c等于2时,P所指向结点的后继即为将被删除的结点*/ q=p->next; p->next=______; printf("%d/t",q->code); /*输出退出圈子的游戏者编号*/ free(q); c=______; n--; /*if*/ p=______; c++; /*while*/ theWinner=______; free(p); return theWinner; /*返回最后一个游戏者(即获胜者)的编号*/
本题关键词:工程说明,游戏场地,沙盘游戏,课间游戏,说明,儿童游戏场,说明书,顺序编码,处方药说明书,中药说明书;