天天操天天射天天舔,午夜精品一码二码三码,欧美粗暴jizz性欧美20,日本视频中文字幕,国语对白新婚少妇在线观看,操大逼网站,国产精品麻豆三级一区视频

軟題庫 學習課程
當前位置:信管網 >> 在線考試中心 >> 試題查看
試題題型【分析簡答題】
試題內容

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

在函數中,以刪除結點來模擬游戲者退出圈子的處理。整型變量c(初值為1)用于計數,指針變量p的初始值為head(如圖4-1所示)。游戲時,從p所指向的結點開始計數,p沿鏈表中的指針方向遍歷結點,c的值隨p的移動相應地遞增。當c計數到2時,就刪除p所指結點的下一個結點(因下一個結點就表示報數到3的游戲者),如圖4-2所示,然后將c設置為0后繼續(xù)游戲過程。

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

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

查看答案

相關試題