导读 今天之间网归一为大家解答以上的问题。约瑟夫环数据结构设计,约瑟夫环数据结构相信很多小伙伴还不知道,现在让我们一起来看看吧!1、我个人...
今天之间网归一为大家解答以上的问题。约瑟夫环数据结构设计,约瑟夫环数据结构相信很多小伙伴还不知道,现在让我们一起来看看吧!
1、我个人觉得用数组做不方便,还是链表好。
2、我编了个循环链表做的约瑟夫环,可以给你参考参考。
3、#include#include typedef struct Node { int key;//每个人持有的密码 int num;//这个人的编号 struct Node *next;//指向下一个节点}Node,*Link;//=================================void InitList(Link &L) //创建一个空的链表{ L=(Node *)malloc(sizeof(Node)); if(!L) exit(1); L->key=0; L->num=0; L->next=L;}void Creater(int n,Link &L) //初始化链表{ Link p,q; q=L; for(int i=1;i<=n;i++) { p=(Node *)malloc(sizeof(Node)); if(!p) exit(1); scanf("%d",&p->key); p->num=i; L->next=p; L=p; } L->next=q->next; free(q);}void main(){ Link L,p,q; int n,x; L=NULL; InitList(L);//构造出一个只有头结点的空链表 printf("please input the totle number of people:"); scanf("%d",&n);//总共的人数n printf("the first key is:"); scanf("%d",&x);//初始密码为x Creater(n,L);//建立好一个约瑟夫环 p=L; for(int i=1;i<=n;i++) { for(int j=1;jnext; q=p->next; x=q->key; printf("%d ",q->num); p->next=q->next; free(q); }}//输入次序依次为总共的人数n,初始密码x,再输入n个人各自拥有的密码;//程序我自己可以成功运行,如果你运行不成,可以看看是否是中英文的问题。
本文就为大家分享到这里,希望大家看了会喜欢。