欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1、問題描述:

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

2、算法步驟:

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

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

該問題共n、m、s三個(gè)未知量,所以可以通過三個(gè)循環(huán)來實(shí)現(xiàn),第一個(gè)循環(huán)用來確定最開始第一個(gè)報(bào)數(shù)的人的指針位置(單鏈表的頭節(jié)點(diǎn)指針指向第s個(gè)人),第二個(gè)循環(huán)用來控制輸出序號(hào)的次數(shù)(共n次),第三個(gè)循環(huán)用來數(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)問題:\n");
	printf("設(shè)有n(編號(hào)為“0 1 2 3 .....n-1 n”)個(gè)人圍坐一圈,現(xiàn)從第s個(gè)人開始報(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);                    //問題引導(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ǔ)言版約瑟夫問題算法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語(yǔ)言約瑟夫問題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VScode + keil開發(fā)環(huán)境搭建安裝使用過程

    VScode + keil開發(fā)環(huán)境搭建安裝使用過程

    這篇文章主要介紹了VScode + keil開發(fā)環(huán)境搭建及安裝使用過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • C++拋出和接收異常的順序

    C++拋出和接收異常的順序

    這篇文章主要介紹了C++拋出和接收異常的順序,幫助大家更好的理解和學(xué)習(xí)C++,感興趣的朋友可以了解下
    2020-08-08
  • C++中Digraphs、Trigraphs和Tokens的深入講解

    C++中Digraphs、Trigraphs和Tokens的深入講解

    這篇文章主要給大家介紹了關(guān)于C++中Digraphs、Trigraphs和Tokens的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的方法

    C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的方法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C++結(jié)構(gòu)體作為函數(shù)參數(shù)傳參的實(shí)例代碼

    C++結(jié)構(gòu)體作為函數(shù)參數(shù)傳參的實(shí)例代碼

    這篇文章主要介紹了C++結(jié)構(gòu)體作為函數(shù)參數(shù)傳參的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • va_list(),va_start(),va_arg(),va_end() 詳細(xì)解析

    va_list(),va_start(),va_arg(),va_end() 詳細(xì)解析

    這些宏定義在stdarg.h中,所以用到可變參數(shù)的程序應(yīng)該包含這個(gè)頭文件.下面我們寫一個(gè)簡(jiǎn)單的可變參數(shù)的函數(shù),該函數(shù)至少有一個(gè)整數(shù)參數(shù),第二個(gè)參數(shù)也是整數(shù),是可選的.函數(shù)只是打印這兩個(gè)參數(shù)的值
    2013-09-09
  • 詳解C++中StringBuilder類的實(shí)現(xiàn)及其性能優(yōu)化

    詳解C++中StringBuilder類的實(shí)現(xiàn)及其性能優(yōu)化

    在Java和C#中,StringBuilder可以創(chuàng)造可變字符序列來動(dòng)態(tài)地?cái)U(kuò)充字符串,那么在C++中我們同樣也可以實(shí)現(xiàn)一個(gè)StringBuilder并且用來提升性能,下面就來詳解C++中StringBuilder類的實(shí)現(xiàn)及其性能優(yōu)化
    2016-05-05
  • C++編程中指針的聲明與基本使用講解

    C++編程中指針的聲明與基本使用講解

    這篇文章主要介紹了詳解C++編程中C++編程中指針的聲明與基本使用講解,文中舉了簡(jiǎn)單的例子來講如何在基本的數(shù)據(jù)結(jié)構(gòu)中使用指針,以及固定和可變指針的介紹,需要的朋友可以參考下
    2016-01-01
  • C語(yǔ)言 位運(yùn)算詳解及示例代碼

    C語(yǔ)言 位運(yùn)算詳解及示例代碼

    本文主要介紹C語(yǔ)言 位運(yùn)算的基礎(chǔ)知識(shí),這里整理了相關(guān)資料及示例代碼,有興趣的小伙伴可以參考下
    2016-08-08
  • C語(yǔ)言實(shí)現(xiàn)商品管理系統(tǒng)開發(fā)

    C語(yǔ)言實(shí)現(xiàn)商品管理系統(tǒng)開發(fā)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)商品管理系統(tǒng)開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評(píng)論