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

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct LNode{
        int data;
        struct LNode *next;
    }LNode,*LinkList;
    
    LinkList Build(int n)//建立有n个结点的循环单链表 
    {
        int i;
        LinkList head;
        head = (LinkList)malloc(sizeof(LNode));
        LinkList s,p = head;
        p->data = 1;
        for(i = 2; i <= n; i ++)
        {
            s = (LinkList)malloc(sizeof(LNode));
            s->data = i;
            p->next = s;
            p = s;
        }
        p->next = head;
        return head;
    }
    LinkList GetElem(LinkList p,int n)//找到从head开始的第n个结点 
    {
        int i;
        LinkList s = p;
        for( i = 1; i < n; i ++)
        {
            s = s->next  ;
        }
        return s;
    }
    int Delete(LinkList p)//删除p的后继结点 
    {
        int num;
        LinkList s;
        s = (LinkList)malloc(sizeof(LNode));
        s = p->next ;
        p->next = s->next ;
        num = s->data ;
        free(s);
        return num;
     } 
    void CountOff(int n,int m,int k,LinkList head)//模拟循环报数全过程 
    {
        int i,num;
        LinkList p  = head;
    
        for(i= n; i >= 1; i --)
        {
            p = GetElem(p,m-1);
            num = Delete(p);
            if( i <= k)
                printf("%d ",num);
            p = p->next ; 
        }
    }
    int main()
    {
        int n,m,k;
        LinkList head;
        while(scanf("%d%d%d",&n,&m,&k)!=EOF)
        {
            head = Build(n);
            CountOff(n,m,k,head);
         } 
        return 0;
     } 
  • 相关阅读:
    程序员的基本修养之二
    jQuery学习之二
    面向对象程序的设计模式
    Mysql的复杂语句
    养成良好的做事风格
    前端模板学习bootstrap
    23. Merge k Sorted Lists
    953. Verifying an Alien Dictionary
    Daily Coding Problem: Problem #541
    396. Rotate Function
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7350138.html
Copyright © 2011-2022 走看看