zoukankan      html  css  js  c++  java
  • 约瑟夫问题

    额,直接上代码:

    typedef struct Node
    {
        int data;
        struct Node *next;
    }Node;
    
    void circle_init(Node *head, const int len);
    void circle_kill(Node *head, int num, const int len);
    void circle_print(Node *head);
    void circle_des(Node *head);
    
    int main()
    {
        int len;
        int num;
        Node head = {0, &head};
        
        printf("输入人数:");
        scanf("%d", &len);
        
        circle_init(&head, len); 
        circle_print(&head);
        
        printf("输入num:");
        scanf("%d", &num);
        
        circle_kill(&head, num, len);
        
        //circle_des(&head);
        return 0;
    }
    
    void circle_init(Node *head, const int len)
    {
        int i = 0;
        Node *p = head;
        
        for(i=0; i<len; i++)
        {
            p->next = (Node *)malloc(sizeof(Node));
            p = p->next;
            p->data = i + 1;
            p->next = head->next;
        }
        
    }
    
    void circle_kill(Node *head, int num, const int len)
    {
        Node *p = head->next;
        Node *temp = NULL;
        int left = len;
        int i = 0;
        do {
            num = num % left;
            for(i=1; i<num-1; i++)
            {
                p = p->next;
            }
            temp = p->next;
            p->next = temp->next;
            p = temp->next;
            printf("%d ", temp->data);
            free(temp);
            left -= 1; 
        }while(left != 1);
        
        printf("%d ", p->data);
        free(p);
        head->next = head;
        
    }
    
    void circle_print(Node *head)
    {
        Node *p = head->next;
        printf("链表:
    ");
        
        do {
            printf("%d ", p->data);
            p = p->next;
        }while(p != head->next);
        
        printf("
    ");
    }
    
    void circle_des(Node *head)
    {
        Node *p = head->next;
        Node *temp = NULL;
        
        
        do {
            temp = p->next;
            free(p);
            p = temp;
        }while(p->next != head->next);
        free(p);
        head->next = head;
    }
  • 相关阅读:
    Vue之常用语法
    Django之crm
    Django项目之客户
    前端、数据库、Django简单的练习
    Django的认证系统
    Django之form表单
    OpneCV 二值图像区域处理
    OpenCV图像处理中常用函数汇总(1)
    OpenCV3编程入门笔记(6)自我验证各函数程序代码
    OpenCV_轮廓的查找、表达、绘制、特性及匹配
  • 原文地址:https://www.cnblogs.com/buerr/p/7350354.html
Copyright © 2011-2022 走看看