| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4056 人关注过本帖
标题:[原创]M个人,1到N报数出列问题
只看楼主 加入收藏
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
结帖率:100%
收藏
 问题点数:0 回复次数:2 
[原创]M个人,1到N报数出列问题

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net
*/ 作者: josen0205 QQ:7007873
*/ 时间: 2007-10-23 编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


/*************************************************************/
/* M个人围成一圈,从1至N开始顺序循环报数 */
/* 每数到N的人出列,输出该数值,直至全部输出 */
/*************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

/* 循环链表结构 */
typedef struct Node{
int data;
struct Node *next;
}*LinkList;

/* 利用单向循环链表找到符合条件的节点,输出节点值并删除该节点 */
int CreateList(LinkList &L,int m); /* 将m个人1到m编号依次插入循环链表L中 */
int GetNode(LinkList &L,int n); /* 依次删除输出链表中符合要求的节点 */

int CreateList(LinkList &L,int m)
{
int i=1;
LinkList tmp,p;
/* 给链表头指针分配内存 */
L=(LinkList)malloc(sizeof(struct Node));
if(L==NULL)
{
printf("动态分配内存失败!");
return -1;
}
p=L;
for(i=1;i<=m;i++) /* 依次为节点分配内存,插入链表 */
{
tmp=(LinkList)malloc(sizeof(struct Node));
if(tmp==NULL)
{
printf("动态分配内存失败!");
return -1;
}
/* 将节点tmp插入链表 */
tmp->data=i;
p->next=tmp;
p=tmp;
}
tmp->next=L->next; /* 最后一个节点next指针指向第一个节点 */
return 0;
}

int GetNode(LinkList &L,int n)
{
LinkList p,s;
int i=0;
p=L->next; /* p指向第一个节点 */
while(p->next!=p) /* 链表中只有一个节点时终止 */
{
i++;
if(i==n-1) /* 找到报数n的节点,输出节点值并删除节点,计数器i归位 */
{
s=p->next;
p->next=p->next->next;
printf("%d ",s->data);
i=0;
free(s);
}
p=p->next;
}
printf("%d ",p->data); /* 输出最后一个节点,并释放其内存 */
free(p);
free(L); /* 释放头节点内存 */
return 0;
}

int main()
{
int m,n;
LinkList L;

printf("Enter the total number of the person[m]:"); /* 总人数 */
scanf("%d",&m);
printf("Enter the number of get out[n]:");
scanf("%d",&n);
CreateList(L,m);
printf("The out queue is:\n");
GetNode(L,n);

getch();
return 0;
}

搜索更多相关主题的帖子: 出列 
2007-10-23 11:53
sunpy
Rank: 1
来 自:厦门
等 级:新手上路
帖 子:118
专家分:0
注 册:2007-10-1
收藏
得分:0 
顶,写的非常好。。。。。。。。



荀子《劝学》:“不积跬步,无以至千里;不积小流,无以成江海.”
2007-10-23 12:44
风的声音
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2007-3-27
收藏
得分:0 

呵呵~~简单易懂~~不过程序过于庞大啊!


一念心清净,莲花处处开。 一花一净土,一土一如来。
2007-10-23 13:02
快速回复:[原创]M个人,1到N报数出列问题
数据加载中...
 
   



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

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