zoukankan      html  css  js  c++  java
  • 保研练习题(2)

    N 个人围成一圈顺序编号,从 1 号开始按 1、2、3 顺序报数,报 3 者退出圈外,其余的人再从 1、2、3 开始报数,报 3 的人再退出圈外,依次类推。

    请按退出顺序输出每个退出人的原序号。要求使用环行链表编程。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 //    链表节点
     5 typedef struct node
     6 {
     7     int num;
     8     struct node *next;
     9 }LNode;
    10 
    11 int main()
    12 {
    13     int n,i;
    14     printf("Please input number of people.
    ");
    15     scanf("%d",&n);
    16     LNode *head,*p,*q;
    17     p = (LNode *)malloc(sizeof(LNode));
    18     p->num = 1;
    19     head = p;
    20     for (i=2; i<=n; i++){
    21         p->next = (LNode *)malloc(sizeof(LNode));
    22         p = p->next;
    23         p->num = i;
    24     }
    25     // 链表尾指回头指针 形成循环链表
    26     p->next = head;
    27     p = head;
    28 
    29     printf("Sequence: ");
    30     while (p->next != p){    // 链表中不是只剩下一个节点
    31         q = p->next;
    32         p = q->next;
    33         printf("%d ",p->num);
    34         q->next = p->next;
    35         delete(p);
    36         p = q->next;
    37     }
    38     printf("%d
    ",p->num);
    39     return 0;
    40 }

  • 相关阅读:
    Redis集群搭建步骤
    JS性能优化
    javaweb中实现在线人数统计
    tomcat在linux中启动慢的解决方案
    Redis高可用架构
    bjpowernode课程体系及题库
    java 相关
    码农翻身全年文章精华
    Spring源码深度解析
    PHPSTROM快捷键备份
  • 原文地址:https://www.cnblogs.com/raul-ac/p/3321962.html
Copyright © 2011-2022 走看看