| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:C语言编程问题
取消只看楼主 加入收藏
liyanfol
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2010-5-20
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
C语言编程问题
有N(N>1)个人围着在一个餐桌吃饭,从第K个人开始计数,每当到P的倍数的人被请出。如此反复,直到最后一个。问最后一个人在原来的位置。
PS:我个人的想法如下:1.利用结构体和环形链表建立模型,根据K和N来确定吃饭人的顺序和人数。
                      2.在结构体中根据K给各块分配序号。
                      3.利用指针循环,当指针到P的倍数时,清除该块。
                      4.最后留下的根据结构体中的序号确定原位置。
搜索更多相关主题的帖子: C语言 
2010-05-25 15:37
liyanfol
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2010-5-20
收藏
得分:0 
回复 2楼 韩明海
请问我理解的对么?
2010-05-25 16:08
liyanfol
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2010-5-20
收藏
得分:0 
回复 5楼 simen1986
谢谢!
2010-05-25 21:55
liyanfol
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2010-5-20
收藏
得分:0 
回复 4楼 韩明海
麻烦大侠帮忙看看这个程序:
#include "stdio.h"
typedef struct listnode
{
   int data;
   listnode *next;
};
listnode order(int k,int n)
{
  listnode *persion,*head,*p,*q,*h;
  p=head=(listnode)malloc(listnode);
  for(i=0;i<n-1;i++)
 {
   q=(listnode)malloc(listnode);
   p->next=q;
   q=p;
   
 }
 p=h;
 p->next=head;
 head=p;
 for(i=k;i<=n;i++)
  {
   p->data=k;
   p++
  }
 for(j=k-1;j>0;j--)
 {
   h->data=j;
   h--;
 }
  return head;
}
void delect(int k,listnode w)
{listnode *p,*q;
 int n;
 w=p;
 while(p->data!=k)
 p->next=p;
 for(n=1;p->next!=null;n++)
 {
  p=p->next;
  if(n%5==0)
  {
   q=p->next;p->next=q->next
  }
 }
 printf("%d",p->data);
}
void main()
{int a,b;
listnode *l,*w;
printf("请输入用餐人数:");
scanf("%d",&a);
printf("请输入从第几人开始计数:");
scanf("%d",&b);
l=order(b,a);
delect(b,l);


}
2010-05-25 22:48
快速回复:C语言编程问题
数据加载中...
 
   



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

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