猴子選大王 實訓 2

2021-06-07 09:04:27 字數 2545 閱讀 7274

2、猴子選大王

一群猴子都有編號,編號是1、2、3、…、m,這群猴子(m個)按照1~m的順序圍坐一圈,從1開始,每數到第n個,該猴子就要離開此圈,這樣依次下去直到圈中只剩下最後乙隻猴子,則該猴子為大王。

【基本功能要求】

(1)輸入資料:輸入整數m、n,其中n(2)提示按照m個猴子數n個數的方法,輸出猴子大王是幾號。

#include

#include

#include

typedef struct monkey

intdata;                  //猴子數;

structmonkey *next;

}list, *plist;

void monkey_list(plist ls)                //建立乙個有m只猴子的鍊錶;

intm;

printf("請輸入有多少猴子:");

scanf("%d",&m);

ls->data = m;   //頭結點的資料域用於儲存猴子數;

if(m > 0)

plistfront;    //用於建立新的結點;

plistlast;        //指向最後乙個結點;

front= (plist)malloc(sizeof(list));    //把ls指向鍊錶;

ls->next= front;

last= front;                    //last指向最後乙個結點;

inti;

for(i=1; i<=m; ++i)

front->data= i;                //資料域賦值;

front->next= null;

last->next= front;             //front連線進鍊表;

last= front;                    //last指向最後乙個結點;

front= null;                      //分配空間前,消除可能存在的隱患;

front= (plist)malloc(sizeof(list));                              

last->next= ls->next;   //形成迴圈鍊錶;

void del_monkey(plist ls)            //找出猴子王;

if(null == ls->next)

printf("猴子死光了\n");

return;

intn;

printf("請輸入猴子所在位置:");

scanf("%d",&n);

intm;

m= ls->data;

if(m>n && n>0)       

inti;                        //用於計數;

i= 0;

plistfront;                //儲存刪除掉結點的前乙個結點;

plistfront_1;               //n為1時,迴圈鍊錶的最後乙個結點;

while(1 != m)              

++i;

front= ls;

ls= ls->next;

if(i == n)

if(1 == n)              //n為1時,須找到最後乙個結點,形成迴圈;可以直接輸出最後乙個結點,這種想的事還是留給電腦....

front_1= ls;

while(ls != front_1->next) //找到最後乙個結點;

front_1= front_1->next;

front_1->next = ls->next;   //連成迴圈;

front->next= ls->next;          

free(ls);

ls= front;   //ls指向刪除的前一結點,因為i賦為0;

else

front->next= ls->next;     //跟上面三句一樣,可以不用else;

free(ls);

ls= front;

i= 0;    //

--m;

printf("猴子王的編號是:%d\n", ls->data);

elseif (1==m)

printf("猴子王的編號是:%d\n", ls->next->data);

else

printf("你的輸入有錯!\n");

int main(void)

plistls;

ls= (plist)malloc(sizeof(list));       

ls->next= null;                         //用於判斷猴子數是否為空;

monkey_list(ls);                    //建立乙個有m只猴子的鍊錶;

del_monkey(ls);                   //刪除猴子,找出猴子王;

return0;

猴子選大王

方法一 include int main 初始化猴子全沒出局 值為0 int count 0 排除的猴子數量 int key 0 剩下的資料索引,即最後要得到的是陣列中第幾隻猴子是大王 int i 0,index 0 i代表計數器1 7,index代表陣列下標 while count 14 當猴子數...

猴子選大王

問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按 照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就 要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該 猴子為大王。輸入m和n,輸出為大王的猴子是幾號。輸入描述 m個猴子和要出去的位數n。程式輸出 king是誰。inc...

猴子選大王

問題 檔名稱 專案5.cpp 作 者 秦緒龍 完成日期 2016年9月23日 版 本 號 v1.0 問題描述 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到 圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m...