鍊錶 PTA 猴子選大王

2021-10-04 05:29:26 字數 1576 閱讀 9598

一群猴子要選新猴王。新猴王的選擇方法是:讓n只候選猴子圍成一圈,從某位置起順序編號為1~n號。每只猴子預先設定乙個數(或稱定數),用最後乙隻猴子的定數d,從第一只猴子開始報數,報到d的猴子即退出圈子;當某只猴子退出時,就用它的定數決定它後面的第幾隻猴子將在下次退出。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請輸出猴子退出圈子的次序以及當選的猴王編號。

函式介面定義:

int

kingofmonkey

(int n,linklist *head)

;

裁判測試程式樣例:

#include

#include

typedef

struct node /*這個結構型別包括三個域 */

linklist;

linklist *

createcircle

(int n )

;linklist *

deletenext

(linklist *p)

;/* 刪除單迴圈鍊錶的p所指的下乙個結點 */

intmain()

輸入樣例:

在這裡給出一組輸入。例如:

532

143

輸出樣例:

在這裡給出相應的輸出。例如:

delete no:

3delete no:

4delete no:

5delete no:

1the king is monkey[2]

.

我的答案

linklist *

createcircle

(int n )

p =(linklist*

)malloc

(sizeof

(linklist));

scanf

("%d"

,&p->mydata)

; p->number =1;

head=q=p;

for(i=

2; i<=n; i++

) p->next = head;

// for ( p = head; ; p = p->next )

// printf("%d %d\n", p->number, p->mydata);

return head;

}linklist *

deletenext

(linklist *p)

intkingofmonkey

(int n, linklist *head)

p=tail;

t=tail->mydata;

while(1

) q=p->next;

deletenext

(p); count--;if

(count==1)

break;

t=q->mydata;

}return p->number;

}

PTA 猴子選大王

一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...

PTA 5 28 猴子選大王

一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。從第1號開始報數,每輪從1報到3,凡報到3的猴子即退出圈子,接著又從緊鄰的下乙隻猴子開始同樣的報數。如此不斷迴圈,最後剩下的乙隻猴子就選為猴王。請問是原來第幾號猴子當選猴王?輸入在一行中給乙個正整數n 10...

鍊錶經典問題 猴子選大王

n 只猴子要選大王,選舉方法如下 所有猴子按1,2 n 編號並按照順序圍成一圈,從第 1個猴子起,由 1開始報數,報到 m時,該猴子就跳出圈外,下乙隻猴子再次由 1開始報數,如此迴圈,直到圈內剩下乙隻猴子時,這只猴子就是大王。include includeusing namespace std ty...