約瑟夫問題.cpp : 定義控制台應用程式的入口點。
約瑟夫問題:已知n個人(n>=1)圍坐一圓桌周圍,從1開始順序編號。從序號為k(k由使用者指定)
的人開始報數,順時針數到m(m由使用者指定)的那個人出列。他的下乙個人又從1開始報數,數到
m的那個人又出列。依此規則重複下去,直到所有人全部出列。請問最後乙個出列的人的編號。
#include "stdafx.h"
#include "malloc.h"
typedef struct node
lnode,*linklist;
linklist creat_linklist(int n) //在表尾插入,建立迴圈鍊錶,n表示鍊錶長度
else
}q->next=h;
if (h!=null)
return h;
else }
int getlength(linklist l)//計算當前約瑟夫環上的人數
else
return i;}}
linklist del(linklist *l,int i)//返回當前出列的人,q指向當前應該出列的人,作為函式的返回值
q=p->next;
p->next=p->next->next;
*l=p->next;//改變迴圈鍊錶的頭指標,本輪出列之後從下乙個開始
return q;
}void joseph(linklist l,int n,int m)//n表示總人數,m表示每次報數的人數
else
else
printf("第%d次出列的號數:%d\n",i,q->data);
free(q);
}printf("最後乙個出列的號數是:%d\n",l->data);}}
迴圈鍊錶(約瑟夫環)
約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。要通過輸入n,m,k三個正整數,來求出列的序列。這個問題採用的是典型的...
迴圈鍊錶應用 約瑟夫環
約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。include includetypedef struct node ...
單向迴圈鍊錶 約瑟夫環
寫個約瑟夫環,檢驗一下自己的學習狀況.include define elemtype int typedef struct lnodesqlist void initlist sqlist l,elemtype n void round sqlist l,int m,int n int main v...