C語言猴子選王鍊錶實現

2021-10-21 08:13:37 字數 1401 閱讀 3576

// 一堆猴子有m個,編號分別是1,2,3 ...m,這m個猴子按照編號1,2,…,m的順序圍坐一圈,然後從第1開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子就為大王。

//要求:分別採用向量及鍊錶兩種儲存方式實現該問題的求解,給出一組m和n,輸出對應的猴王。

#include

#include

#include

int main

(void);

struct list *houzi;

int m, n, a;

a =1;

//a用來計數

printf

("輸入猴子的個數m=");

scanf

("%d"

,&m)

;printf

("輸入數到第n只猴子出局,n=");

scanf

("%d"

,&n)

; houzi =

(struct list *

)malloc

(sizeof

(struct list));

struct list *head;

struct list *current;

struct list *now;

now =

(struct list *

)malloc

(sizeof

(struct list));

head = houzi;

houzi-

>name =1;

//第一只猴子分開初始化

houzi-

>next=now;

houzi = houzi-

>next;

for(int i =

1; i < m -

1; i++

)//初始化所有的猴子編號

houzi-

>name = m;

//最後乙隻猴子初始化,並把最後和頭連起來,構成乙個環

houzi-

>next = head;

houzi = head;

while

(m >1)

a =1;

current = houzi-

>next;

houzi-

>next = houzi-

>next-

>next;

current =

null

; houzi = houzi-

>next;

m = m -1;

}printf

("%d"

, houzi-

>name)

;}

約瑟夫問題(猴子選王)c語言鍊錶與陣列的實現

1.約瑟夫問題 設編號為1,2,m的m個人圍坐一圈,從1開始報數,數到n 的那個人出列,它的下一位又從1開始報數,數到n的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。1 2 3 4 5 6 7 8 第1 次出列 6 a 5 0 total 1 1 2 3 4 5 7 8 ...

C語言程式設計 猴子選大王 鍊錶應用

description 有n只猴子,從1 n進行編號。它們按照編號的順時針方向排成乙個圓圈,然後從第一只猴子開始報數。第一只猴子報的第乙個數字為1,以後每只猴子報的數字都是它們前面猴子所報數字加1。如果乙個猴子報的數字是m,則該猴子出列,下乙個猴子重新從1開始報數,直到所有猴子都出列為止,最後乙個出...

猴子選大王(陣列 鍊錶實現)

已知,有n只猴子,圍繞成一圈,從第1只猴子開始報數1,第2只猴子報數2,以此類推,報數到m時,該猴子退出圈外。從下乙隻猴子開始,重新開始報數,每次報數到m時都會淘汰乙隻猴子,最後剩下的猴子為大王。請問,猴子大王的一開始的序號是多少?首先這道題乍一看似乎如果用陣列做,陣列的下標會比較難處理,但我們可以...