zoukankan      html  css  js  c++  java
  • 约瑟夫环

      

    题目描述

    有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    输入

    初始人数n

    输出

    最后一人的初始编号

    样例输入

    3

    样例输出

    2
     使用无头循环单链表即可
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 typedef struct huan {
     4 unsigned int a; 
     5 struct  huan *pNext; 
     6 }HUAN;
     7 HUAN *Create(int n) {
     8     HUAN *pHead, *pNew = NULL;    int i;
     9     pHead = (HUAN*)malloc(sizeof(HUAN));
    10     pHead->a = 1;
    11     pHead->pNext = NULL;
    12     HUAN *cyclic = pHead;
    13         for (i = 2; i <= n; i++) {
    14         pNew = (HUAN*)malloc(sizeof(HUAN));
    15         pNew->a = i;
    16         pNew->pNext = NULL;
    17         cyclic->pNext = pNew;
    18         cyclic = cyclic->pNext;
    19     }
    20     cyclic->pNext = pHead;
    21     return pHead;
    22 }
    23 void Sort(HUAN *head) {
    24      HUAN *pbefore, *p;
    25      p = head; pbefore =NULL;
    26     while (p->pNext!=p) {
    27         for (int i = 1; i < 3; i++) {
    28             pbefore = p;
    29             p = p->pNext;
    30         }
    31         pbefore->pNext = p->pNext;
    32         free(p);
    33         p = pbefore->pNext;
    34         
    35 }
    36     printf("%d", p->a);
    37     free(p);
    38     
    39     
    40 }
    41 
    42 int main() {
    43     int n; HUAN *p;
    44     scanf("%d", &n);
    45     p = Create(n);
    46     Sort(p);
    47     
    48 }
     
  • 相关阅读:
    Java泛型 E、T、K、V、N
    二维码生成,二维码中嵌套图片,文字生成图片
    线程之线程安全解决
    多线程的卖票示例来理解两种创建线程方法的区别
    多线程
    Object类
    Runtime
    9.Lambda表达式入门
    匿名内部类
    局部内部类
  • 原文地址:https://www.cnblogs.com/mwq1024/p/10228459.html
Copyright © 2011-2022 走看看