此程序错在哪?(约瑟夫环)
约瑟夫
#include<stdio.h>
#include<stdlib.h>
struct data{
int num;(输值时依次为1,2,3,4........)
int sec;
struct data *next;
}
main()
{struct data *result (struct data *head1);
struct data *prin (struct data *head2);
int n;int m=1;
struct data *head;
struct data *p1,*p2;
printf("please putin the count of your struct: ");
scanf("%d",&n);
while(m<=n)
{if(m==1) p2=head=p1=(struct data*)malloc(sizeof(struct data));(建链表)
else p1=(struct data*)malloc(sizeof(struct data));
p2->next=p1;
p2=p1;
printf("putin the data of present struct :\n ");
scanf("%d,%d",&p1->num,&p1->sec);
m++;
}
p1->next=head;
prin(head);
printf("\n");
result(head);
}
/实现主要功能/(可能这里错了)
struct data * result(struct data *head1)
{struct data *p1,*p2;int i,a;
p2=p1=head1;
printf("the number you want to circle firstly:\n");
scanf ("%d",&a);
printf("the result is:\n");
while(p2!=p2->next&&p1!=p1->next)
{ {for(i=1;i<=a;i++)
p2=p1;
p1=p2->next;
}
printf("%d,%d\n",p1->num,p1->sec);
a=p1->sec;
p2->next=p1->next; p1=p1->next;
}
if(p1==p1->next) printf("%d,%d",p1->num,p1->sec);
else printf("%d,%d",p2->num,p2->sec);
}
/输出链表/
struct data *prin(struct data *head2)
{struct data *p1,*p2;
p1=head2;
printf("%d,%d ",p1->num,p1->sec);
p1=head2->next;
while(p1!=head2)
{printf("%d,%d ",p1->num,p1->sec);
p1=p1->next;
}
}
#include<stdio.h>
#include<stdlib.h>
struct data{
int num;(输值时依次为1,2,3,4........)
int sec;
struct data *next;
}
main()
{struct data *result (struct data *head1);
struct data *prin (struct data *head2);
int n;int m=1;
struct data *head;
struct data *p1,*p2;
printf("please putin the count of your struct: ");
scanf("%d",&n);
while(m<=n)
{if(m==1) p2=head=p1=(struct data*)malloc(sizeof(struct data));(建链表)
else p1=(struct data*)malloc(sizeof(struct data));
p2->next=p1;
p2=p1;
printf("putin the data of present struct :\n ");
scanf("%d,%d",&p1->num,&p1->sec);
m++;
}
p1->next=head;
prin(head);
printf("\n");
result(head);
}
/实现主要功能/(可能这里错了)
struct data * result(struct data *head1)
{struct data *p1,*p2;int i,a;
p2=p1=head1;
printf("the number you want to circle firstly:\n");
scanf ("%d",&a);
printf("the result is:\n");
while(p2!=p2->next&&p1!=p1->next)
{ {for(i=1;i<=a;i++)
p2=p1;
p1=p2->next;
}
printf("%d,%d\n",p1->num,p1->sec);
a=p1->sec;
p2->next=p1->next; p1=p1->next;
}
if(p1==p1->next) printf("%d,%d",p1->num,p1->sec);
else printf("%d,%d",p2->num,p2->sec);
}
/输出链表/
struct data *prin(struct data *head2)
{struct data *p1,*p2;
p1=head2;
printf("%d,%d ",p1->num,p1->sec);
p1=head2->next;
while(p1!=head2)
{printf("%d,%d ",p1->num,p1->sec);
p1=p1->next;
}
}
...全文
相关推荐
Python实现约瑟夫环问题的方法
"本文主要介绍了如何使用Python编程解决约瑟夫环问题,提供了一个递归函数的实现方式。约瑟夫环问题是一个经典的理论问题,它涉及到数组、循环和递归算法的应用。"约瑟夫环问题是一个著名的理论问题,
约瑟夫环C语言实现代码
### 约瑟夫环C语言实现代码解析#### 知识点一:约瑟夫环问题背景与定义约瑟夫环问题是一个经典的计算机科学问题,源自于犹太历史学家约瑟夫斯所记载的一个事件。
约瑟夫环(链表实现)
"约瑟夫环(链表实现)"约瑟夫环是一种经典的算法问题,它的主要思想是使用链表来模拟一个环形结构,然后通过遍历这个环形结构来实现约瑟夫环的操作。下面我们将详细介绍约瑟夫环的链表实现。
基于C++约瑟夫环问题
《基于C++实现约瑟夫环问题》约瑟夫环问题是一个经典的计算机科学问题,源自古罗马时代的一个传说。
用C语言实现约瑟夫环问题
《C语言实现约瑟夫环问题详解》约瑟夫环问题,又称约瑟夫环序列,是一个著名的理论问题,源自古罗马的一个传说。在这个问题中,人们围成一个圈,按照一定的规则逐个淘汰,直到剩下最后一个人为止。


