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

C語(yǔ)言用循環(huán)單鏈表實(shí)現(xiàn)約瑟夫環(huán)

 更新時(shí)間:2021年10月28日 17:09:41   作者:東流長(zhǎng)江水  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言用循環(huán)單鏈表實(shí)現(xiàn)約瑟夫環(huán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

用循環(huán)單鏈表實(shí)現(xiàn)約瑟夫環(huán)(c語(yǔ)言),供大家參考,具體內(nèi)容如下

源代碼如下,采用Dev編譯通過,成功運(yùn)行,默認(rèn)數(shù)到三出局。

主函數(shù):

main.c文件

#include <stdio.h>
#include "head.h"
#include "1.h"


int main() 
{
    Linklist L;
    int n;
    printf("請(qǐng)輸入約瑟夫環(huán)中的人數(shù):");
    scanf("%d",&n);
    Createlist(L,n);
    printf("創(chuàng)建的約瑟夫環(huán)為:\n");
    Listtrave(L,n);
    printf("依次出局的結(jié)果為:\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é)點(diǎn)之后就先給首節(jié)點(diǎn)賦值,使得后面節(jié)點(diǎn)賦值的操作能夠循環(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("已生成一個(gè)長(zhǎng)度為%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;//進(jìn)行不等于3時(shí)的移位 
        }
        else
        {
            Linklist q;
            q = p;//用q保存p所指的位置,方便進(jìn)行節(jié)點(diǎn)的刪除 
            if(s->next->data == s->data)//當(dāng)只有一個(gè)元素的時(shí)候 
            {
                printf("%3d\n",s->data);
                free(s);
                return OK;
            }
            else//當(dāng)有兩個(gè)及兩個(gè)以上的元素的時(shí)候 
            {
                count = 1;//先將count重置為1
                printf("%3d",p->data);//再打印出出局的值 
                while(s->next != p) 
                {
                    s = s->next;//將s移位到p的前驅(qū)節(jié)點(diǎn)處 
                }
                p = p->next;//使p指向自己的下一個(gè)節(jié)點(diǎn) 
                s->next = p;//進(jìn)行刪除 
                free(q);
            }
        }
    }
}

1.h文件:

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2

運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于C++中常見內(nèi)存錯(cuò)誤的總結(jié)

    基于C++中常見內(nèi)存錯(cuò)誤的總結(jié)

    本篇文章是對(duì)C++中常見的內(nèi)存錯(cuò)誤進(jìn)行了總結(jié)介紹。需要的朋友參考下
    2013-05-05
  • Java C++題解leetcode915分割數(shù)組示例

    Java C++題解leetcode915分割數(shù)組示例

    這篇文章主要為大家介紹了Java C++題解leetcode915分割數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • C語(yǔ)言各種操作符透徹理解下篇

    C語(yǔ)言各種操作符透徹理解下篇

    C?語(yǔ)言提供了豐富的操作符,除了上篇中的算術(shù)操作符,移位操作符,位操作符,賦值操作符外,還有單目操作符、關(guān)系操作符、邏輯操作符、條件操作符等等,讓我們通讀本篇來詳細(xì)了解吧
    2022-02-02
  • QT5編譯使用QFtp的方法步驟

    QT5編譯使用QFtp的方法步驟

    這篇文章主要介紹了QT5編譯使用QFtp的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C++ Boost MetaStateMachine定義狀態(tài)機(jī)超詳細(xì)講解

    C++ Boost MetaStateMachine定義狀態(tài)機(jī)超詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-12-12
  • Qt操作SQLite數(shù)據(jù)庫(kù)的教程詳解

    Qt操作SQLite數(shù)據(jù)庫(kù)的教程詳解

    SQLite是一款開源、輕量級(jí)、跨平臺(tái)的數(shù)據(jù)庫(kù),無需server,無需安裝和管理配置。它的設(shè)計(jì)目標(biāo)是嵌入式的,所以很適合小型應(yīng)用,也是Qt應(yīng)用開發(fā)種常用的一種數(shù)據(jù)庫(kù)。本文為大家介紹了Qt操作SQLite數(shù)據(jù)庫(kù)的示例,希望對(duì)大家有所幫助
    2022-12-12
  • C語(yǔ)言實(shí)現(xiàn)通訊錄的詳細(xì)代碼

    C語(yǔ)言實(shí)現(xiàn)通訊錄的詳細(xì)代碼

    本文詳細(xì)講解了C語(yǔ)言實(shí)現(xiàn)通訊錄的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C++中宏的使用問題詳解

    C++中宏的使用問題詳解

    宏替換是C/C++系列語(yǔ)言的技術(shù)特色,C/C++語(yǔ)言提供了強(qiáng)大的宏替換功能,源代碼在進(jìn)入編譯器之前,要先經(jīng)過一個(gè)稱為“預(yù)處理器”的模塊,這個(gè)模塊將宏根據(jù)編譯參數(shù)和實(shí)際編碼進(jìn)行展開,展開后的代碼才正式進(jìn)入編譯器,進(jìn)行詞法分析、語(yǔ)法分析等等。
    2016-05-05
  • C++ 標(biāo)準(zhǔn)模板類詳解

    C++ 標(biāo)準(zhǔn)模板類詳解

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板類的介紹與使用講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • C語(yǔ)言關(guān)鍵字總結(jié)解析

    C語(yǔ)言關(guān)鍵字總結(jié)解析

    這篇文章主要介紹了C語(yǔ)言關(guān)鍵字總結(jié)解析,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是本文的詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論