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

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node{
        int data;
        struct Node *next;
    }node;
    
    //创建约瑟夫环
    node* create(int n){
        node *head,*p,*s;
        int i;
        head = (node*)malloc(sizeof(node));
        p = head;
        p->data = 0;
        p->next = p;
        for (i = 1; i <= n; i++){
            s = (node*)malloc(sizeof(node));
            p->next = s;
            p = p->next;
            p->data = i;
        }
        head = head->next;
        //组成环路
        p->next = head;
        return head;
    }
    
    node* findNode(node *head, int index){
        //环路不存在到链表尾情况
        while (--index){
            head = head->next;
        }
        return head;
    }
    
    node* delNode(node *head, int index){
        node *p, *s;
        index--;
        while (--index)
        {
            head = head->next;
        }
        p = head->next;
        head->next = p->next;
        free(p);
        return head->next;
    }
    
    void main(){
        node *mylist;
        mylist = create(10);
        //找到开始位置
        node *start = findNode(mylist, 1);
        //只剩最后一个元素时必然指向自身
        while (start!=start->next)
        {
            //更新开始位置
            start=delNode(start,2);
        }
      printf("%d",start->data); }

    公式法:

    1. f[1]=0; f[i]=(f[i-1]+m)%i; (i>1)      

    2. f[1]=1; f[i]=(f[i-1]+m)%i  (i>1);   if(f[i]==0) f[i]=i;

    3. P(1, m, k)=1 (i = 1);   P(i, m, k)=[P(i - 1, m, k ) + m - 1] % i + 1 (i > 1, 此处先减1是为了让模i的值不为0)

  • 相关阅读:
    C#泛型
    Chrome 中调试Javascript
    Oracle分页查询语句
    WordCount2.2
    第一周博客作业
    WordCount--统计输入文件的字符数、行数、单词数(java)--初级功能
    PHP数据库操作
    PHP安全函数
    PHP基础
    用户/目录操作
  • 原文地址:https://www.cnblogs.com/bankyh/p/4474647.html
Copyright © 2011-2022 走看看