C語言用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán)
更新時間:2021年10月28日 17:09:41 作者:東流長江水
這篇文章主要為大家詳細介紹了C語言用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
用循環(huán)單鏈表實現(xiàn)約瑟夫環(huán)(c語言),供大家參考,具體內容如下
源代碼如下,采用Dev編譯通過,成功運行,默認數(shù)到三出局。
主函數(shù):
main.c文件
#include <stdio.h> #include "head.h" #include "1.h" int main() { Linklist L; int n; printf("請輸入約瑟夫環(huán)中的人數(shù):"); scanf("%d",&n); Createlist(L,n); printf("創(chuàng)建的約瑟夫環(huán)為:\n"); Listtrave(L,n); printf("依次出局的結果為:\n"); Solution(L,n); return 0; }
head.h文件:
#include "1.h" #include <stdio.h> #include <stdlib.h> typedef int Elemtype; typedef struct LNode{ Elemtype data; struct LNode *next; }LNode,*Linklist; void Createlist(Linklist &L,int n) { Linklist p,tail; L = (Linklist)malloc(sizeof(LNode)); L->next = L;//先使其循環(huán) p = L; p->data = 1;//創(chuàng)建首節(jié)點之后就先給首節(jié)點賦值,使得后面節(jié)點賦值的操作能夠循環(huán) tail = L; for(int i = 2;i <= n;i++) { p = (Linklist)malloc(sizeof(LNode)); p->data = i; p->next = L; tail->next = p; tail = p; } printf("已生成一個長度為%d的約瑟夫環(huán)!\n",n); } void Listtrave(Linklist L,int n)//遍歷函數(shù) { Linklist p; p = L; for(int i = 1;i <= n;i++) { printf("%3d",p->data); p = p->next; } printf("\n"); } int Solution(Linklist L,int n) { Linklist p,s; p = L,s = L; int count = 1; while(L) { if(count != 3) { count++;p = p->next;//進行不等于3時的移位 } else { Linklist q; q = p;//用q保存p所指的位置,方便進行節(jié)點的刪除 if(s->next->data == s->data)//當只有一個元素的時候 { printf("%3d\n",s->data); free(s); return OK; } else//當有兩個及兩個以上的元素的時候 { count = 1;//先將count重置為1 printf("%3d",p->data);//再打印出出局的值 while(s->next != p) { s = s->next;//將s移位到p的前驅節(jié)點處 } p = p->next;//使p指向自己的下一個節(jié)點 s->next = p;//進行刪除 free(q); } } } }
1.h文件:
#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2
運行結果:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java C++題解leetcode915分割數(shù)組示例
這篇文章主要為大家介紹了Java C++題解leetcode915分割數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11C++ Boost MetaStateMachine定義狀態(tài)機超詳細講解
Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱2022-12-12