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...