深夜成人在线,chinese国产一区二区,欧美精品乱码,日韩欧美在线视频免费观看,国产午夜不卡,日韩av影院在线,五月天婷婷国产精品

軟題庫(kù) 學(xué)習(xí)課程
當(dāng)前位置:信管網(wǎng) >> 在線考試中心 >> 試題查看
試題題型【分析簡(jiǎn)答題】
試題內(nèi)容

閱讀以下說(shuō)明和C程序,填充函數(shù)中的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
N個(gè)游戲者圍成一圈,從1~N順序編號(hào),游戲方式如下:從第一個(gè)人開(kāi)始報(bào)數(shù)(從1到3報(bào)數(shù)),凡報(bào)到3的人退出圈子,直到剩余一個(gè)游戲者為止,該游戲者即為獲勝者。
下面的函數(shù)playing(LinkList head)模擬上述游戲過(guò)程并返回獲勝者的編號(hào)。其中,N個(gè)人圍成的圈用一個(gè)包含N個(gè)結(jié)點(diǎn)的單循環(huán)鏈表來(lái)表示,如圖4-1所示,游戲者的編號(hào)放在結(jié)點(diǎn)的數(shù)據(jù)域中。

在函數(shù)中,以刪除結(jié)點(diǎn)來(lái)模擬游戲者退出圈子的處理。整型變量c(初值為1)用于計(jì)數(shù),指針變量p的初始值為head(如圖4-1所示)。游戲時(shí),從p所指向的結(jié)點(diǎn)開(kāi)始計(jì)數(shù),p沿鏈表中的指針?lè)较虮闅v結(jié)點(diǎn),c的值隨p的移動(dòng)相應(yīng)地遞增。當(dāng)c計(jì)數(shù)到2時(shí),就刪除p所指結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)(因下一個(gè)結(jié)點(diǎn)就表示報(bào)數(shù)到3的游戲者),如圖4-2所示,然后將c設(shè)置為0后繼續(xù)游戲過(guò)程。

結(jié)點(diǎn)類型定義如下:
typedef  struct node{
int  code;       /*游戲者的編號(hào)*/
struct  node  *next;
}NODE,*LinkList;
【C 函數(shù)】
int  playing(LinkList  head ,int  n)
{    /* head 指向含有n個(gè)結(jié)點(diǎn)的循環(huán)單鏈表的第一個(gè)結(jié)點(diǎn)(即編號(hào)為1的游戲者) */
LinkList  p = head ,q;
int theWinner ,c = 1;

while   (  n  >     (1)  ){
if (c == 2) { /*當(dāng)c等于2時(shí),p所指向結(jié)點(diǎn)的后繼即為將被刪除的結(jié)點(diǎn)*/
q  =  p->next;
p->next  =      (2)     ;
printf("%d\t" ,q->code);     /*輸出退出圈子的游戲者編號(hào)時(shí)*/
free (q) ;
c =       (3)     ;
n--;
} /*if*/
p =    (4)        ;
c++;
}/*while*/
theWinner=   (5)   ;
free(p);
return   theWinner;  /*返回最后一個(gè)游戲者(即獲勝者)的編號(hào)*/
}

查看答案

相關(guān)試題