-
大小: 2KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-01-09
- 語言: C/C++
- 標(biāo)簽: 約瑟夫環(huán)??3??
資源簡介
約瑟夫環(huán)2、 約瑟夫(Josephus)環(huán)問題:編號為1,2,3,…,n的n個人按順時針方向圍坐一圈,每人持有一個密碼(正整數(shù))。一開始任選一個正整數(shù)作為報數(shù)的上限值m,從第一個人開始按順時針方向自1開始順序報數(shù),報到m時停止。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下一人開始重新從1報數(shù),如此下去,直到所有人全部出列為止。
建立n個人的單循環(huán)鏈表存儲結(jié)構(gòu),運(yùn)行結(jié)束后,輸出依次出隊的人的序號。
代碼片段和文件信息
#include
#include
#define?ElemType?int
#define?OK?0
#define?OVERFLOW?0
#define?ERROR?0
typedef?struct?LNode{
int???data;
int?password;
struct?LNode??*next;
}LNode?*linkList;
//創(chuàng)建約瑟夫環(huán)
linkList*?CreateList_L(linkList?*Lint?z)//返回linkList類型?????????struct?LNode**可不可以去掉一個星?????????
{
int?keyi;
linkList?pq;
?
?(*L)=(linkList)malloc(sizeof(LNode)); //L指向首地址
q?=?(*L);
q->next?=?NULL;
for(i=1;i<=z;i++)
{
p=(linkList)malloc(sizeof(LNode));
q->next?=?p;
p->next?=?NULL;//必須保持空
p->data?=?i;
printf(“輸入第%d個人的密碼:“i);
scanf(“%d“&key);
p->password?=?key;
q?=?p; //????????
}
*L?=?(*L)->next;//?????????/是刪除L?L是否改變???????
p->next?=?*L;//實現(xiàn)循環(huán)
//p->next?=?(*L)->next;
return?L;//返回首地址
}
?//對單循環(huán)鏈表進(jìn)行操作
?O
評論
共有 條評論