| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 491 人关注过本帖
标题:[求助]我有个小代码运行不通,问题出在哪??
只看楼主 加入收藏
shuaishen
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-2
收藏
 问题点数:0 回复次数:5 
[求助]我有个小代码运行不通,问题出在哪??

问题就是,有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");
}

搜索更多相关主题的帖子: 代码 运行 
2007-01-02 03:31
wyzn12
Rank: 1
等 级:新手上路
帖 子:129
专家分:0
注 册:2006-10-28
收藏
得分:0 

我改了你程序中的错误后可以在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");
}


新王登基,血流成河!
2007-01-02 09:35
fangly
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-8-26
收藏
得分:0 
楼主
在.net 上怎样运行c程序啊
麻烦说下
谢谢 啊

[此贴子已经被作者于2007-1-2 11:34:44编辑过]


生活有你更精彩~
2007-01-02 11:34
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
收藏
得分:0 
在.net可以运行非安全的c++程序(也就是说,相当于可以运行c程序)
用关键字unsafe声明,这就是托管代码,但是不建议用.net来运行c++程序

个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2007-01-02 12:06
shuaishen
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-1-2
收藏
得分:0 

谢谢2楼的 wyzn12 的指点
在.net上可以选择 WIN32程序可以运行C程序,但是不建议这样做.

2007-01-03 15:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用wyzn12在2007-1-2 9:35:54的发言:

#define NULL 0 /*应该宏定义null*/
有头文件包含的.


倚天照海花无数,流水高山心自知。
2007-01-03 18:57
快速回复:[求助]我有个小代码运行不通,问题出在哪??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015598 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved