日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

约瑟夫环c语言程序完整版,C语言:约瑟夫环问题(源代码)

發布時間:2025/3/12 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 约瑟夫环c语言程序完整版,C语言:约瑟夫环问题(源代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本帖最后由 geige 于 2015-7-26 00:48 編輯

#include

#include

struct stu //構建一個新的數據類型

{

int num;

struct stu *next;

};

struct stu *createlist(int n);??//函數聲明

int main()

{

struct stu *head,*p,*temp;? ?//定義頭指針,以及中間指針temp,用來刪除節點

int n,m,i,j=1,flag=0;

printf("Please input n and m:\n");

scanf("%d%d",&n,&m);

head=createlist(n);? ?? ?? ? //調用函數來創建鏈表并返回頭指針賦值給head

p=head->next;? ?? ?? ?? ?? ? //將首節點的地址賦值給p

if(m==1)? ?? ?? ?? ?? ?? ?? ?//如果m等于1,直接按順序輸出

{

while(p!=NULL)

{

printf("%d ",p->num);

p=p->next;

}

putchar('\n');

}

else

{

while(n!=1)

{

for(i=1;i<=n;i++)

{

if(p!=NULL)

{

if(j==m)

{

printf("%d ",p->num);

if(p==head->next)

head->next=p->next; //如果刪除的是首結點,那么將第二個節點作為首節點

temp->next=p->next;

p=temp->next;

j=1;

flag++;

}

else

{

j++;

temp=p;

p=p->next;

}

}

}

n=n-flag; //退出的人數要減去

flag=0;

p=head->next; //將首節點重新賦給p

}

printf("%d\n",temp->num); //輸出最后一個數

}

free(p); //釋放內存

return 0;

}

struct stu *createlist(int n)

{

int i;

struct stu *phead=(struct stu*)malloc(sizeof(struct stu)),*ptail;??//申請頭結點

if(phead==NULL)

{

printf("Not able apply for memory !\n");

return 0;

}

ptail=phead; //

ptail->next=NULL; //將頭結點的下一個地址置空

for(i=1;i<=n;i++)

{

struct stu *pnew=(struct stu*)malloc(sizeof(struct stu)); //開辟新的節點

if(pnew==NULL)

{

printf("Not able apply for memory !\n");

return 0;

}

pnew->num=i;

ptail->next=pnew;

pnew->next=NULL;

ptail=pnew; //節點前移

}

return phead; //返回頭指針

}

總結

以上是生活随笔為你收集整理的约瑟夫环c语言程序完整版,C语言:约瑟夫环问题(源代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。