问题就是,有n个人围成一圈,从第一个开始数,数到3则喊3的这个人出列,下一个人接着从一开始数,如此循环,问最后剩下一个的是几号???
我是用个循环单链表实现的,但是代码写好后,无论在TC还是。NET上,都有问题,请大家帮我找找,问题出在哪,先谢大家了。
这是我写的,请大家批评。
typedef struct list
{
int data;
struct list*next;
}listype;
main()
{
int m,n;
listype *h,*s,*x,*y;
printf("n=");
scanf("%d",&n);
m=n;
if((h=(listype*)malloc(sizeof(listype)))=NULL)
return 0;
h->next=NULL;
h->data=1;
x=h;
for(int i=2;i<=n;i++)
{
if((s=(listype*)malloc(sizeof(listype)))=NULL)
return 0;
s->data=i;
s->next=NULL;
x->next=s;
x=x->next;
}
s->next=h;
x=h;
while(m!=1)
{
for(int j=0;j<1;j++)
{
x=x->next;
}
y=x->next;
x->next=y->next;
free(y);
m--;
if(m!=1)
x=x->next;
}
printf("\n");
printf("%d->%d",n,x->data);
printf("\n");
}
----------------解决方案--------------------------------------------------------
我改了你程序中的错误后可以在tc下运行,但你的结果是错的,可能是你的算法有问题,个人意见:用环链表做这个题其实算法很简单,就是加个计数器flag,当flag是3的整数倍时打印出相应的结点,然后再将此结点从链表中拆掉,如此循环,直到拆完为此。你自己再考虑考虑
红色部分是纠正你的语法错误
#define NULL 0 /*应该宏定义null*/
typedef struct list
{
int data;
struct list*next;
}listype;
main()
{
int m,n,i,j;
listype *h,*s,*x,*y;
printf("n=");
scanf("%d",&n);
m=n;
if((h=(listype*)malloc(sizeof(listype)))==NULL)/*这里你粗心了*/
return 0;
h->next=NULL;
h->data=1;
x=h;
for(i=2;i<=n;i++)/*这里不能这么写int i,在c++中可以,在tc下应该在前面定义*/
{
if((s=(listype*)malloc(sizeof(listype)))==NULL)/*这里你粗心了*/
return 0;
s->data=i;
s->next=NULL;
x->next=s;
x=x->next;
}
s->next=h;
x=h;
while(m!=1)
{
for(j=0;j<1;j++)/*这里不能这么写int j,在c++中可以,在tc下应该在前面定义*/
{
x=x->next;
}
y=x->next;
x->next=y->next;
free(y);
m--;
if(m!=1)
x=x->next;
}
printf("\n");
printf("%d->%d",n,x->data);
printf("\n");
}
----------------解决方案--------------------------------------------------------
楼主
在.net 上怎样运行c程序啊
麻烦说下
谢谢 啊
[此贴子已经被作者于2007-1-2 11:34:44编辑过]
----------------解决方案--------------------------------------------------------
在.net可以运行非安全的c++程序(也就是说,相当于可以运行c程序)
用关键字unsafe声明,这就是托管代码,但是不建议用.net来运行c++程序
----------------解决方案--------------------------------------------------------
谢谢2楼的 wyzn12 的指点
在.net上可以选择 WIN32程序可以运行C程序,但是不建议这样做.
----------------解决方案--------------------------------------------------------
#define NULL 0 /*应该宏定义null*/
有头文件包含的.
----------------解决方案--------------------------------------------------------