| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 854 人关注过本帖
标题:3的倍数退出(链表)
取消只看楼主 加入收藏
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:3 
3的倍数退出(链表)
题目:25个人围成一个圈,从第1个人开始顺序报名,凡报名为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。
#include<stdio.h>
#include<malloc.h>
int m=0;
struct num
{
int i;
struct num *next;
};
struct num *create_list(int n);
void print(struct num *p);
struct num *delet(struct num *head,int n);
void main()
{
struct num *q;
q=create_list(25);
printf("生成链表号码为\n");
print(q);
printf("最后留在圈子中的人原来的序号为\n");
while(25-m>2);
q=delet(q,25-m);
print(q);
}
struct num *create_list(int n)
{
int j;
struct num *head,*tail,*p;
head=tail=NULL;
for(j=1;j<=n;j++)
{
p=(struct num *)malloc(sizeof(struct num));
p->i=j;
p->next=NULL;
if(head==NULL) head=tail=p;
else
{
tail->next=p;
tail=p;
}
}
return head;
}
void print(struct num *p)
{
while(p!=NULL)
{
printf("%d ",p->i);
p=p->next;
}
}
struct num *delet(struct num *head,int n)
{
struct num *p1,*p2;
int i;
for(i=1;i<=n;i++)
{
if(i%3==0)
{
p2->next=p1->next;
free(p1);
p1=p2->next;
m++;
}
else
{
p2=p1;
p1=p1->next;
}

}
return head;
}
这是我写的         结果
图片附件: 游客没有浏览图片的权限,请 登录注册

后面的怎么没输出来      搞不懂      请教各位大侠
搜索更多相关主题的帖子: 倍数 链表 
2010-02-05 22:19
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
额 是少了                但我加上去后   结果还是上面那样  后面的输不出来
2010-02-07 10:06
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
     while(25-m>2);
2010-02-07 10:15
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
以下是引用血色味道在2010-2-6 15:05:03的发言:

经过我细致的观察发现,定义的第三个函数里少了一个p1=head;语句。
谢谢你
2010-02-07 10:47
快速回复:3的倍数退出(链表)
数据加载中...
 
   



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

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