| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 347 人关注过本帖
标题:谁来帮帮我看看这个 求解 有奖赏
只看楼主 收藏
w1249468815
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-11-15
结帖率:0
  已结贴   问题点数:20  回复次数:1   
谁来帮帮我看看这个 求解 有奖赏
实习安排
一、线性表及其应用
题目:约瑟夫环(Joseph)
① 问题描述:编号为1到n的n个人,按顺时针方向围成一个环(循环单链表),每人都持有一个密码(正整数)。任选一个正整数作为报数的上限(设为m),从第一个人开始按顺时针方向从1开始顺序报数,当报到m时,暂停报数并输出其标识(位序),同时将报数为m的人删除,并将他的密码作为新的m值,继续从1开始重新报数,直到m并输出。如此重复,直到全部人员都从队列中输出。编写程序,求出该出列顺序。
2017-11-15 20:09
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:154
注 册:2017-11-15
  得分:20 
不太理解每个人的密码是什么意思,我的是给每个人按1到n为编号,我设为每数到三就有一个出来,你可以自己修改数值
2.单向循环链表
    #include<stdio.h>
#include<stdlib.h>
#define N 10
typedef struct node{
int data;
struct node *next;
}ElemsN;
//每三个小孩出一个小孩,小孩出来的顺序。
void  OutChild(ElemsN *h)
{
    ElemsN *outp,*q;
    q=NULL;
    int i;
    while(h!=h->next){
        for(i=1,outp=h;i<3;i++,q=outp,outp=outp->next);
        printf("%5d",outp->data);
        h=q->next=outp->next;
        free(outp);
    }
    printf("%5d\n",h->data);
}
//创建一个单向循环链表。
ElemsN * Createlink(int a[])
{
    ElemsN *p,*head,*q;
    int i;   
    for(i=0;i<N;i++){
        q=(ElemsN *)malloc(sizeof(ElemsN));
        if(!i)
            head=p=q;
        q->next=head;
        p->next=q;
        q->data=a[i];
        p=q;
        }
    return head;
}
2017-11-16 08:29







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

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