利用C語言實現自殺環

2022-03-07 10:00:08 字數 1122 閱讀 6025

執行環境:win10,vs2013

約瑟夫環是乙個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始從1報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到剩餘乙個人

linklist.c

#include

#include

#include

typedef int datatype;//定義資料型別

//節點的構造

typedef struct node

node,*pnode;

//初始化

void initlinklist(pnode* phead)

//構造新節點

pnode buynode(datatype x)

}//列印鍊錶

void printlinklist(pnode phead)

printf("null");

}printf("\n");

}//尾插

pnode pushback(pnode* phead,datatype x)

else

ptail->pnext = pcur;

}return phead;

}//約瑟夫環函式

pnode josephcircle(pnode phead, size_t m)

pcur->pnext = phead;

pcur = phead;

//迴圈刪除節點

while (pcur != pcur->pnext)

//替換法刪除節點(通過刪除需要刪除節點的下乙個節點)

pdel = pcur->pnext;

pcur->data = pdel->data;

pcur->pnext = pdel->pnext;

free(pdel);

pdel = null;

}//解環

pcur->pnext = null;

return pcur;

}test.c

void test()

int main()

執行結果:

ps:由此可見,josephus是多麼聰明的乙個人啊!

C語言 實現約瑟夫環

鏈式解法 include include typedef struct sqlist sqlist 建立解約瑟夫環需要的鍊錶,該鍊錶不帶頭節點 sqlist creatlist int length p next null 普通鍊錶轉不帶頭結點的迴圈鍊錶,就是將頭指標下移到第乙個節點位置 原來的頭結...

C語言實現約瑟夫環

直接上 define crt secure no warnings include includetypedef struct listnode listnode void create listnode firstnode,int m 建立單向迴圈鍊錶 int i listnode pre fir...

C語言實現約瑟夫環

一共有n個人,圍成一圈,從一開始報數,數到m的人出局,然後重新開始報數。算出出局的人的順序 如果最後只能剩下乙個人,請問是幾號?include includetypedef struct node linklist,node linklist init ring int num return hea...