zoukankan      html  css  js  c++  java
  • 约瑟夫问题(单向链表)

    # include "stdlib.h" 
    # include "stdio.h" 
    struct Node
    {
     int data;
     Node *next;
    };
    int main()
    {
     int n,k=1,m,i,s;
      Node *p,*q,*head;
      printf("约瑟夫问题——顺序表/n输入总人数n和退出编号m:/n"); // 输入总人数,退出编号 
      scanf("%d%d",&n,&m); 
      head=new Node;           //确定头结点
      p=head;
     for(i=1;i<=n-1;i++)                 //赋初值
     {
      p->data=i;
      p->next=new Node;   //为下一个新建内存
      p=p->next;
     }
      p->data=n;                 //最后一个单独处理
      p->next=head;                 //指向头,形成循环链表
      p=head;                 
     
     while(p->data!=(p->next)->data)            //p->data==(p->pNext)->data表示只剩下一个结点的
     {
      while(p->data !=k)         //寻找编号为k的结点
       p=p->next;
       s=1;
     if(m==1)
     {
      for(i=1;i<n;i++)
      {
       p=p->next ;
       }  
      printf("最后退出的是第%d位人/n",p->data);     
    break;
     }
    else
    {
    while(p!=p->next)           
     {
      for(i=1;i<m-1;i++)         
    p=p->next;             
    q=p->next;          
    p->next=q->next;
    p=p->next;
      delete q;
      s++; 
       }
    printf("最后退出的是第%d位人/n",p->data);      
    delete p;
    }
     }
    system("Pause");
    return 0; 
    }

  • 相关阅读:
    SCAU 9504 面试
    SCAU 9503 懒人选座位
    SCAU 8628 相亲
    SCAU 10691 ACM 光环
    SCAU 8626 原子量计数
    SCAU 10674 等差对
    HDU ACM 1048 The Hardest Problem Ever (水题)
    SCAU 9502 ARDF
    SCAU 10686 DeathGod不知道的事情
    SCAU 8629 热身游戏(高精度)
  • 原文地址:https://www.cnblogs.com/ituff/p/2858553.html
Copyright © 2011-2022 走看看