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

C語(yǔ)言版約瑟夫問(wèn)題算法實(shí)現(xiàn)

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

1、問(wèn)題描述:

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

2、算法步驟:

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

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

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

3、實(shí)現(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)問(wèn)題:\n");
	printf("設(shè)有n(編號(hào)為“0 1 2 3 .....n-1 n”)個(gè)人圍坐一圈,現(xiàn)從第s個(gè)人開(kāi)始報(bào)數(shù),數(shù)到m的人出列,\n求最后的出列順序。\n");
	printf("請(qǐng)?jiān)O(shè)置n, s, m :\n");
	printf("n = ");
	scanf("%d", &n);
	printf("s = ");
	scanf("%d", &s);
	printf("m = ");
	scanf("%d", &m);                    //問(wèn)題引導(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;
		}                                //第一個(gè)循環(huán)確定第一個(gè)報(bào)數(shù)的人在循環(huán)單鏈表中的位置  
 
	for(i = 1; i <= n; i++)              //外部循環(huán)代表遍歷到最后一個(gè)所需要的循環(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語(yǔ)言版約瑟夫問(wèn)題算法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語(yǔ)言約瑟夫問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pipes實(shí)現(xiàn)LeetCode(193.驗(yàn)證電話號(hào)碼)

    Pipes實(shí)現(xiàn)LeetCode(193.驗(yàn)證電話號(hào)碼)

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

    C語(yǔ)言實(shí)現(xiàn)棧及棧的詳解

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

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

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

    一文帶你掌握C語(yǔ)言中的文件操作

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

    C++控制臺(tái)版掃雷游戲

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

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

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

    C++初階教程之類和對(duì)象

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

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

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

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

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

    C++掃雷游戲的簡(jiǎn)單制作

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

最新評(píng)論

灵川县| 拉萨市| 太康县| 宝清县| 平武县| 灯塔市| 正镶白旗| 汤阴县| 光泽县| 甘南县| 利辛县| 通渭县| 勐海县| 西畴县| 华池县| 马龙县| 晴隆县| 左贡县| 宣威市| 珠海市| 朝阳市| 雷波县| 双峰县| 阿拉善左旗| 左贡县| 通许县| 衡水市| 怀集县| 中牟县| 轮台县| 旺苍县| 北宁市| 龙门县| 明星| 茂名市| 济宁市| 漳浦县| 天气| 寻乌县| 洛浦县| 府谷县|