當前位置:編程學習大全網 - 編程軟體 - 約瑟夫環問題:設編號為1,2,3,……,n的n(n>0)個人按順時針方向圍坐壹圈,m為任意壹個正整數。從第壹個

約瑟夫環問題:設編號為1,2,3,……,n的n(n>0)個人按順時針方向圍坐壹圈,m為任意壹個正整數。從第壹個

***有三種解法:我先給妳壹個同密碼,循環鏈表寫的吧!

歡迎采納並追問!

#include <stdio.h>

#include <stdlib.h>

int linktype(int n,int m) //鏈表結構

{

int people,passord;

struct node

{

int data;

struct node *next;

}NODE;

node *p,*head,*q,*pri;

head=(node *)malloc(sizeof(struct node));//創建壹個空表

head->next=NULL;

head->data=1;

q=head;

for(int i=2;i<=n;i++)

{

p=(node *)malloc(sizeof(struct node));//讓系統分配壹塊新的內存

p->data=i;

p->next=NULL;

q->next=p;

q=q->next;

}

q->next=head;//建立循環鏈表

pri=q;p=head;//從head開始循環

people=0;passord=1;//出去了幾個人、記錄的密碼數

while(people<n)

{

pri=pri->next;

p=p->next;

passord++;

if(passord==m)

{

printf("%-4d",p->data);

node *temp;

temp=p;

pri->next=p->next;

p=p->next;

free(temp);

people++;passord=1;

}

}

printf("\n");

return 0;

}

int main()

{

int n,m;

printf("請輸入人數和密碼");

while(scanf("%d%d",&n,&m)!=EOF)

{

if(m<0||n<0)

{

printf("輸入錯誤,請重新輸入\n");

continue;

}

linktype(n,m);

}

system("pause");

return 0;

}

  • 上一篇:CAD軟件技術學習交流區solidcam與camworks有何區別
  • 下一篇:請問我這有c語言編程7~8個錯誤是哪裏錯了,題目如圖
  • copyright 2024編程學習大全網