发表一下学习约瑟夫环的心得
本帖最后由 DAY 于 2016-7-8 18:13 编辑//约瑟夫环代码;
#include<cstdio>
#include<cstdlib>
typedef struct Node{
int data;
struct Node *next;
};
Node *create(const int n){
Node *head,*p;
head=(Node *)malloc(sizeof(Node));
p=head;
for(int i=1;i<=n;++i){
Node *s=(Node *)malloc(sizeof(Node));
s->data=i;
p->next=s;
s->next=head->next;
p=s;
}
free(head);
return p->next;
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
Node *rear;
rear=create(n);
while(rear->next!=rear){
for(int i=1;i<m-1;++i)rear=rear->next;
printf("%d-->",rear->next->data);
rear->next=rear->next->next;
rear=rear->next;
}
printf("%d\n",rear->data);
return 0;
}
{:5_95:} {:5_95:} {:5_95:}
下面是java版约瑟夫环代码:
**** Hidden Message ***** 谢谢分享 收藏了,开学学习结构算法 多谢分享 看看java 看看java {:9_239:} {:5_91:} 辛苦了,谢谢分享 {:10_256:} 学习学习。 学习 会 加油 jav
aa 小甲鱼视频中为什么m要%=n呢,
源代码:
int n = 40;
int m = 3;
int i;
node *p = create(n);
node *temp;
m = n%m;
while(p != p->next)
{
for (i = 0; i < m-1; ++i) { //问题在这,还要减一
p = p->next;
}
printf("%d->",p->next->date);
temp = p->next;
p->next = temp->next;
free(temp);
p = p->next;
}
printf("%d\n",p->date);
return 0;
想不明白求大神指导
页:
[1]