zoukankan      html  css  js  c++  java
  • 循环链表,约瑟夫环问题

      约瑟夫(Josephus)环问题:编号为1,2,3,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,直到所有人全部出列为止。

    建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。

    #include <stdio.h>
    #include <stdlib.h>
    #include "malloc.h"

    typedef struct Node{  //节点
        struct Node *next;
        int data;
    }Node;

    typedef struct List{  //循环链表存储结构
        Node *front;
        Node *rear;
        int length;
    }List;

    List* Init(){
        List* L = (List*)malloc(sizeof(List));
        L->front = NULL;
        L->rear = NULL;
        L->length = 0;
    }

    void insert(List *L, Node *e){
        if(L->length == 0){
            L->front = e;
            L->rear = e;
        }else{
            L->rear->next = e;
            L->rear = e;
        }
        L->rear->next = L->front;
        L->length++;
    }

    void display(List *L){
        Node *p = L->front;
        int i = 1;
        for( ; i <= L->length; i++){
            printf("The out is %d ", p->data);
            p = p->next;
        }
    }

    int main()
    {
        int N = 30; //人数
        int M = 3; //报数上限

        List *L = Init();
        int i = 1;
        for(; i <= N; i++){
            Node *e = (Node*)malloc(sizeof(Node));
            e->data = i;
            insert(L, e);
        }

        Node *p = L->rear;
        Node *q = NULL;
        int cnt = 1;
        int REST = L->length;
        while(REST > 0){
            for(cnt = 1; cnt < M; cnt++){
                p = p->next;
            }
            q = p->next;
            printf("The out is %d ", q->data);
            p->next = p->next->next;
            REST--;
        }
        return 0;
    }

  • 相关阅读:
    ThreadLocal内存泄漏真因探究(转)
    JAVA设计模式工厂模式
    java设计模式单例模式
    Java-Socket
    Java-Queue总结
    Java-Reentrantlock
    Java-Iterator遍历集合
    安装和启动docker
    C# System.Reflection.Assembly动态加载资源文件
    C#调用 kernel32.dll
  • 原文地址:https://www.cnblogs.com/pbnull/p/4565169.html
Copyright © 2011-2022 走看看