最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言版約瑟夫問題算法實現(xiàn)

 更新時間:2021年12月31日 11:39:39   作者:不要聞蚊香  
大家好,本篇文章主要講的是C語言版約瑟夫問題算法實現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你又幫助的話記得收藏一下,方便下次瀏覽

1、問題描述:

? ? ? ?有n個人圍坐一圈,現(xiàn)從第s個人開始報數(shù),數(shù)到m的人出列,接著從出列的下一個人開始重新報數(shù),數(shù)到m的人又出列.如此下去,直到所有人都出列為止.試設(shè)計確定他們出列次序序列的程序

2、算法步驟:

????????1、確定存儲結(jié)構(gòu):n個人圍成一圈,故使用循環(huán)單鏈表來存儲序號

????????2、算法實現(xiàn):

該問題共n、m、s三個未知量,所以可以通過三個循環(huán)來實現(xiàn),第一個循環(huán)用來確定最開始第一個報數(shù)的人的指針位置(單鏈表的頭節(jié)點指針指向第s個人),第二個循環(huán)用來控制輸出序號的次數(shù)(共n次),第三個循環(huán)用來數(shù)數(shù)(每一次循環(huán)使指針移動m次)

3、實現(xiàn)源代碼:

# include <stdio.h>
# include <malloc.h>
 
typedef struct Node
{
	int number;
	struct Node * pNext;
}NODE, *PNODE;
 
PNODE creat_list(int n);
 
int main (void)
{
	int n,m,s;
	printf("約瑟夫環(huán)問題:\n");
	printf("設(shè)有n(編號為“0 1 2 3 .....n-1 n”)個人圍坐一圈,現(xiàn)從第s個人開始報數(shù),數(shù)到m的人出列,\n求最后的出列順序。\n");
	printf("請設(shè)置n, s, m :\n");
	printf("n = ");
	scanf("%d", &n);
	printf("s = ");
	scanf("%d", &s);
	printf("m = ");
	scanf("%d", &m);                    //問題引導(dǎo)提示代碼段
 
 
	PNODE pHead = NULL;
	pHead = creat_list(n); 
    pHead->number = 1;                   //創(chuàng)建單鏈表
 
	PNODE p = pHead;                       //定義頭指針
	int i,j,k;                            //定義循環(huán)參數(shù)
	for(j = 1; j < s; j++)
		{
			p = p->pNext;
		}                                //第一個循環(huán)確定第一個報數(shù)的人在循環(huán)單鏈表中的位置  
 
	for(i = 1; i <= n; i++)              //外部循環(huán)代表遍歷到最后一個所需要的循環(huán)次數(shù)
	{
		for(k = 1; k < m; )              //內(nèi)部循環(huán)代表遍歷出列的人
		{
			if(p -> pNext -> number != 0)
			{
				p = p -> pNext;
				k++;
			}
			else
			{
				p = p -> pNext;
			}
		}
		printf("%d  ",p -> number);
		p -> number = 0;
	    do
		{
		    p = p -> pNext;
		}while(p -> number == 0); 
	}
	printf("\n");
	
	return 0;
}
PNODE creat_list(int n)                        //單鏈表的創(chuàng)建
{
	PNODE pHead = (PNODE)malloc(sizeof(NODE));
    PNODE pTail = pHead;
	int i;
    for(i = 2; i <= n; i++)
	{
		PNODE pNew = (PNODE)malloc(sizeof(NODE));
		pNew->number = i;
		pTail->pNext = pNew;
		pNew->pNext = pHead;
		pTail = pNew;
	}
	return pHead;
}

到此這篇關(guān)于C語言版約瑟夫問題算法實現(xiàn)的文章就介紹到這了,更多相關(guān)C語言約瑟夫問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pipes實現(xiàn)LeetCode(193.驗證電話號碼)

    Pipes實現(xiàn)LeetCode(193.驗證電話號碼)

    這篇文章主要介紹了Pipes實現(xiàn)LeetCode(193.驗證電話號碼),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言實現(xiàn)棧及棧的詳解

    C語言實現(xiàn)棧及棧的詳解

    這篇文章主要介紹了C語言實現(xiàn)棧及棧的詳解,一種特殊的線性表,其只允許在固定的一端進(jìn)行插入和刪除元素操作,進(jìn)行數(shù)據(jù)插入和刪除操作的一端稱為棧頂,另一端稱為棧底,需要的朋友可以參考下
    2023-07-07
  • C++?Protobuf的學(xué)習(xí)使用指南

    C++?Protobuf的學(xué)習(xí)使用指南

    protocol?buffers是一種語言無關(guān)、平臺無關(guān)、可擴展的序列化結(jié)構(gòu)數(shù)據(jù)的方法,它可用于(數(shù)據(jù))通信協(xié)議、數(shù)據(jù)存儲等,下面就來跟隨小編一起簡單學(xué)習(xí)一下它的使用吧
    2023-07-07
  • 一文帶你掌握C語言中的文件操作

    一文帶你掌握C語言中的文件操作

    文件通常是駐留在外部介質(zhì)(如磁盤等)上的,在使用時才調(diào)入內(nèi)存中來,本文主要來和大家介紹一下C語言中的文件操作,有需要的可以了解下
    2024-02-02
  • C++控制臺版掃雷游戲

    C++控制臺版掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C++控制臺版掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 使用C語言實現(xiàn)繪制立體分離式環(huán)圖

    使用C語言實現(xiàn)繪制立體分離式環(huán)圖

    這篇文章主要為大家詳細(xì)介紹了使用C語言實現(xiàn)繪制立體分離式環(huán)圖的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • C++初階教程之類和對象

    C++初階教程之類和對象

    C++是面向?qū)ο缶幊痰?這也是C++與C語言的最大區(qū)別,而類和對象就是C++面向?qū)ο蟮幕A(chǔ),下面這篇文章主要給大家介紹了關(guān)于C++初階教程之類和對象的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • c++實現(xiàn)二路歸并排序的示例代碼

    c++實現(xiàn)二路歸并排序的示例代碼

    這篇文章主要介紹了c++實現(xiàn)二路歸并排序的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • C++多線程基礎(chǔ)理論詳解

    C++多線程基礎(chǔ)理論詳解

    這篇文章主要介紹了C++多線程基礎(chǔ)理論,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • C++掃雷游戲的簡單制作

    C++掃雷游戲的簡單制作

    這篇文章主要為大家詳細(xì)介紹了C++掃雷游戲的簡單制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

威信县| 曲水县| 江油市| 安康市| 马龙县| 新平| 德兴市| 甘孜县| 疏勒县| 扶沟县| 香格里拉县| 西贡区| 和政县| 孟村| 新丰县| 渑池县| 汝城县| 揭东县| 郎溪县| 安多县| 穆棱市| 乡城县| 黎城县| 仪陇县| 繁峙县| 东兰县| 海盐县| 任丘市| 长垣县| 翼城县| 屏南县| 蒙山县| 息烽县| 峨山| 佛冈县| 广西| 稷山县| 闵行区| 兴化市| 正阳县| 长阳|