• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-01-09
  • 语言: C/C++
  • 标签: 约瑟夫环  3  

资源简介

约瑟夫环2、 约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。 建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。

资源截图

代码片段和文件信息

#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;


//创建约瑟夫环
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;//实现循环
//p->next = (*L)->next;
return L;//返回首地址
}


 //对单循环链表进行操作
 O

评论

共有 条评论