午夜无码中文字幕影院,国产自产第一区c国产,久久久久久夜精品精品免费,国产99久久,夜夜夜夜曰天天天天拍国产,欧美日韩亚洲另类专区,国产精品区一区二区免费

軟題庫 移動APP 掃碼下載APP 隨時隨地移動學習 培訓課程
試卷名稱 2011年下半年程序員考試下午真題試題(案例分析)
考試中心《2011年下半年程序員考試下午真題試題(案例分析)》在線考試
試卷年份2011年下半年
試題題型【分析簡答題】
試題內容

試題四(共15分)
    閱讀以下說明和c函數,填補c函數中的空缺(1)—(5),將解答寫在答題紙的對應欄內。  
【說明】  
    約瑟夫問題如下所述:有n個人(編號為1~n)圍成一圈,從第一個人開始,按照順時針方向從1開始計數到m(即數到第m個人),讓其出圈,然后再從其順時針方向的下一個人開始,依次計數到m并讓其出圈,重復這個過程,直到所有人都出圈,試給出出圈者的順序。  
    以n=5,m=3為例,其中圈順序為3,1,5,2,4,過程如下圖所示。
    
    下面的函數Joseph()在單向循環(huán)鏈表表示的基礎上訴出圈的過程。 
    n為5時的單向循環(huán)鏈表結構如下圖所示。
    
    鏈表的結合類型定義如下: 
    typedef struct Node  {
        int no;
        struct Node*next; 
    }Node,*LinkList;  
    函數Joseph(LinkList tail,int n,int m)的處理思路如下:  
    (1)用k計數,每次都從0開始,當計數到m-1時結束本次計數;  
    (2)通過指針p查找出圈者所對應的結點,當K的值等于是m-1時,P應指向出圈者對應結點的前驅結點;  
    (3)通過刪除結點表示出圈處理;  
    (4)當m大于圈中剩余人數時,為了避免重復計數,用模運算修改m的值; 
    (5)計數和刪除操作完成后再恢復m的原值;
【C函數】  
void Joseph(LinkList tail,int n,int m) 
{     /*單循環(huán)鏈表包含n個結點,tail為鏈表的尾指針,m為計數值*/
LinkList p,q; 
int k,i,old_m=m; 
 
p=tail;  
for(i=n;i>1;--i)  {                       /*i 表示圈中剩余人數*/ 
          m=m%i;                         /*避免重復計數*/ 
if(0==m)    m=(1); 
   k=0;  
       while(k<(2))   {
            (3);  
k++; 
       }  
       printf("%d\n",(4));    /*輸出出圈者的編號*/ 
q=p->next;  
(5)=q->next;       /*刪除出圈者對應的結點*/ 
free(q); 
          m=old_m; 
     }  
     printf(“%d\n”,p->No); 


相關試題

推薦文章
合作網站內容