小Bob 小Bob Bob来啦

2020年10月12日 01:10 __ _ _ _ _

文章配图

点击上方「 蓝字 」关注”程序员Bob”

每天与你不见不散!

文章配图

每日一句,送给最珍贵的你:

学会适应不同的环境,与环境一起改变与否,将决定你开启一场怎样的人生!

## 题目描述

‍ ‍ n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到m
的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。 ‍ ‍

## 输入格式 ‍ ‍

‍ ‍ 输入两个整数 n,m 。

## 输出格式

输出一行 n 个整数, 按顺 序输出每个出圈人的编号。

** **

输入输出样例 ‍ ‍

输入10 3输出3 6 9 2 7 1 8 5 10 4** 源代码: **


#include <stdio.h>#include <stdlib.h>
typedef struct Node {    int data;    struct Node *next;}ListNode;
typedef ListNode *LinkList;
LinkList InitList (int n,LinkList L);LinkList ListDelete(int n,int m,LinkList L);
int main() {    LinkList L;    int n,m;    scanf("%d %d",&n, &m);    L=InitList(n,L);    L=ListDelete(n,m,L);    //return 0;}
LinkList InitList (int n,LinkList L) {    ListNode *p, *q;    int i;    L = (ListNode *) malloc(sizeof(ListNode));    q=L;//q为临时变量,将头节点赋值给q    for (i = 1; i <= n; i++) {        p = (ListNode *) malloc(sizeof(ListNode));        p->data =i;//初始化p的data        q->next=p;//将q指向p的首地址        q=p;//p为尾结点,将p赋值给临时变量q    }    p->next=L->next;//使最后一个结点指向第一个结点,使之构成一个循环    return L;}
LinkList ListDelete(int n,int m,LinkList L){    int i,l;    ListNode *p, *q;    p=L;    for(i=1;i<=n;i++){        for(l=1;l<m;l++){            p=p->next;//p是第l-1个(待删除项)        }        q=p->next;        p->next=q->next;        printf("%d ",q->data);        free(q);        L=p;    }    return L;}

运行结果:

文章配图

文章配图

**最后的话:****刷题要找自己的不足,然后去专攻。 ** ** ** ** 往期推荐: **

Navicat Premium 15 连接MySQL安装教程 2020-10-10
文章配图

My SQL服务库下载安装走起! 2020-10-08
文章配图

关于小编 2020-10-06
文章配图

为你,千千万万遍.

关注 程序员Bob 公众号, 与你 一起终 生学习

文章配图

一键三连,就差你了
文章配图

预览时标签不可点

阅读




__