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

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

運行結果:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 基于C++中常見內存錯誤的總結

    基于C++中常見內存錯誤的總結

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

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

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

    C語言各種操作符透徹理解下篇

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

    QT5編譯使用QFtp的方法步驟

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

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

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

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

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

    C語言實現(xiàn)通訊錄的詳細代碼

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

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

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

    C++ 標準模板類詳解

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

    C語言關鍵字總結解析

    這篇文章主要介紹了C語言關鍵字總結解析,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是本文的詳細內容,需要的朋友可以參考下
    2021-07-07

最新評論