| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1820 人关注过本帖, 2 人收藏
标题:希望jzh2004大哥再进来帮我修改一下!!谢谢,急!麻烦了
只看楼主 加入收藏
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏(2)
 问题点数:0 回复次数:12 
希望jzh2004大哥再进来帮我修改一下!!谢谢,急!麻烦了

题目是:

有N个小孩子,按顺时针方向围成一个圆。老师指定从第一个小孩开始报数,按顺序1,2,3…… 数到M个小孩时,该小孩子退到圈外,然后从编号为M的下一个小孩子开始报数。如此重复下去,直到所有小孩都出列,求小孩的出列顺序。 1.用链表处理 2.N和M用键盘输入。 3.分别用3个函数创建一个链表的求解。完成的求解用链表输出小孩的出列顺序。 4.在主函数中调用上面的函数。

这是我做的,但是有好多的错误。 我不知道要怎么修改呀!!麻烦大哥帮忙看下!!

#include <stdio.h> #include <malloc.h> #include <conio.h> typedef struct node_type{ int seq,code; struct node_type *next; }link; main() { int i,m,n,cn; link *h,*p,*q; printf("Input the first code m:"); scanf("%d",&m);//输入初始数 printf("Input number n:"); scanf("%d",&n);//输入人数 m=m-1;//此处减一是相当于... p=(link*)malloc(sizeof(link)); h=p; q=p; printf("Input codes:"); for(i=1;i<=n-1;i++) { scanf("%d",&cn); p->seq=i;p->code=cn; p=(link*)malloc(sizeof(link)); q->next=p; q=p; } scanf("%d",&cn); p->seq=n; p->code=cn; p->next=h; if((n>1)&&(m==0)) { m=h->code;printf("%d ",h->seq); p->next=h->next; free(h); h=p->next; } p=h; while((n>1)&&(m!=0)) { if(m>1) for(i=1;i<=m-1;i++)p=p->next; q=p->next; m=q->code; printf("%d ",q->seq); p->next=q->next; free(q); n=n-1; } printf("%d\n",p->seq); getch(); }

急呀!!谢谢咯!!!

[此贴子已经被作者于2004-06-14 22:09:41编辑过]

搜索更多相关主题的帖子: 麻烦 
2004-06-09 23:06
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

你把编译的错误说明也贴出来,最好你说一下错在哪?

我在网吧没编译器


我的主页 http://www.
2004-06-10 12:36
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 

这题目我感觉太复杂啦!! 自己仔细想象好象都不对呀!!


我很笨的!! 但我很勤奋!!
2004-06-10 12:48
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

题目叫你要写三个函数啊,你定义好链表后一个个来,先写个建链表函数

在写报数的函数,在写输出的函数,然后主函数调用

这样你会思路清楚点的


我的主页 http://www.
2004-06-10 12:51
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 
写报数的函数这里我的思路不是很清晰!!

我很笨的!! 但我很勤奋!!
2004-06-10 13:08
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

写报数函数就是一个反复循环的过程,一开始循环链表从第一个开始报

当报到M时,就删除该结点,(这应该会)

直到只剩一个为止

定义一个m,从1开始到m就删除结点,并将m复位为1


我的主页 http://www.
2004-06-10 14:19
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 

能不能帮我把这个函数给我写一下呀!!

[此贴子已经被作者于2004-06-10 20:36:36编辑过]


我很笨的!! 但我很勤奋!!
2004-06-10 19:35
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

void f(link *h,int m)

{ int i=1;

link *p

while(1)

{ if(h->next==h)return; /*如果链表只剩一个结点,就退出*/

if(i+1==m) /*如果下一个结点报到了m*/

{ p=h->next;h->next=p->next;free(p);i=1;h=h->next;} /*将该结点删除*/

else {h=h->next;i++;}

}

}


我的主页 http://www.
2004-06-10 22:01
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 

谢谢大哥啦!!我自己再写写,有不懂的还要向你请教啊!!


我很笨的!! 但我很勤奋!!
2004-06-10 23:52
G★star
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2004-6-9
收藏
得分:0 

   我自己也马马乎乎的凑合的写出来了,但自己觉得不是很满意,不知道jzh2004大哥有没有时间呀.

能不能把这个题目用你的思想来完整写一下,我想拿和我自己写的做一些对比,看看存在的一些不足的地方,

随便想看一下算法上的不同.

拜托了!!jzh2004大哥!!!!


我很笨的!! 但我很勤奋!!
2004-06-14 01:24
快速回复:希望jzh2004大哥再进来帮我修改一下!!谢谢,急!麻烦了
数据加载中...
 
   



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

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