| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1773 人关注过本帖
标题:n个人围成一圈,从第s个人开始数,顺时针数m个人,让其出列,从下一个开始依 ...
只看楼主 加入收藏
hsmile
Rank: 1
来 自:大连
等 级:新手上路
帖 子:23
专家分:0
注 册:2009-5-21
结帖率:100%
收藏
 问题点数:0 回复次数:6 
n个人围成一圈,从第s个人开始数,顺时针数m个人,让其出列,从下一个开始依旧是第m个人出列,直到n个人全部出列,把它们最开始的顺序按出列的次序放到数组b中
在论坛上能找到类似的帖子,自己倒腾了一会没弄明白,我这个比能找到的那几个麻烦点。
要求能自己输入想要的n,s,m值。
搜索更多相关主题的帖子: 顺序 出列 时针 
2010-03-26 12:24
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
这个问题,网上很多,能找到符合你条件的!

★★★★★为人民服务★★★★★
2010-03-26 13:25
evilperfect
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-3-26
收藏
得分:0 
可以使用循环链表实现!
2010-03-26 14:21
hsmile
Rank: 1
来 自:大连
等 级:新手上路
帖 子:23
专家分:0
注 册:2009-5-21
收藏
得分:0 
悲剧,有点蛋疼。。
2010-03-26 15:20
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
本论坛已出过帖,请使用查询功能。

想象力征服世界
2010-03-26 18:15
hsmile
Rank: 1
来 自:大连
等 级:新手上路
帖 子:23
专家分:0
注 册:2009-5-21
收藏
得分:0 
回复 5楼 longlong89
我搜过。。
2010-03-26 18:39
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define LEN sizeof( struct LNode )

typedef struct LNode
{
    int num; //位置
    struct LNode *next;
}*LinkList;

//定义全局变量
int n;     //表示总的人数

//建立链表
void Creat_list( LinkList &L )
{
    LinkList p, r;
    int i = 1;
    printf("输入人的总数:");
    scanf("%d", &n);
    p = (LinkList) malloc (LEN);
    if( !p )
    {
        printf("没有空间可分配!\n");
        return ;
    }
    p->num = 1;
    p->next = NULL;
    r = L = p;
    for( i = 2; i<=n; i++ )
    {
        p = (LinkList) malloc (LEN);
        p->num = i;
        p->next = NULL;
        r->next = p;
        r = p;
    }
    r->next = L;
}

//输出链表
void Output_list( LinkList &L )
{
    LinkList p = L;
    int i=0;
    for( ; i<n; i++ )
    {
        printf("%d ", p->num);
        p = p->next;
    }
    printf("\n");
}


//进行查找 输出 数组结果
void Search_list( LinkList &L )
{
    int s, m;
    LinkList p = L;
    int *d , i, j;


    d = (int *) malloc (n*sizeof(int));

lop:printf("输入从第几个人开始数:");
    scanf("%d", &s );
    if( s>n )
    {
        printf("s 输入有误!\n");
        goto lop;
    }
    printf("输入数几个人后出列一个人:");
    scanf("%d", &m );

    while( (p->num) != s )
        p = p->next;
   
    for( i = 1; i<=n-2; i++ )
    {
        for( j=1; j<m; j++ )
            p = p->next;
        *(d++) = p->next->num;
        p->next = p->next->next;
        p = p->next->next;
    }
    if( m%2 == 1 )
    {
        *(d++) = p->next->num;
        *(d++) = p->num;
    }
    else
    {
        *(d++) = p->num;
        *(d++) = p->next->num;
    }

    d = d-n;
    for( i=0; i<n; i++ )
        printf("%d ", *(d++) );
    printf("\n");
}

void main()
{
    LinkList L;

    Creat_list( L );
    Output_list( L );
    Search_list( L );

}
2010-03-30 07:05
快速回复:n个人围成一圈,从第s个人开始数,顺时针数m个人,让其出列,从下一个 ...
数据加载中...
 
   



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

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