C語言實現約瑟夫環

2021-08-28 20:06:42 字數 1180 閱讀 5376

直接上**

#define _crt_secure_no_warnings

#include#includetypedef struct listnode

listnode;

void create(listnode * firstnode, int m) //建立單向迴圈鍊錶

int i;

listnode * pre = firstnode;

for (i = 2; i <= m; i++)

pre->next = firstnode;

}void show(listnode * firstnode) //顯示迴圈鍊錶的節點編號

int i;

printf("建立的單向環表節點編號依次為:\n");

listnode * p = firstnode;

printf("%d\n", p->data);

p = p->next;

while (p != firstnode) }

listnode * joseph(listnode * firstnode, int m, int s, int n) //一共m個結點, 從第s個結點開始計數到第n個結點

int i;

listnode * current = firstnode;

for (i = 1; i <= s-1; i++)

printf("輸出第s個結點:\n");

printf("%d\n", current->data);

int j;

for (j = 2; j <= n-1; j++) //current已經為當前節點,所以j從2開始(下乙個節點)

printf("輸出第n個結點:\n");

printf("%d\n", current->next->data);

//刪除第n個結點

listnode * noden = current->next;

current->next = noden->next;

if (noden == firstnode)

noden->next = null;

free(noden);

show(firstnode);

return firstnode;

}int main()

C語言 實現約瑟夫環

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

C語言實現約瑟夫環

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

C語言實現約瑟夫環討論

問題描述 約瑟夫 joseph 問題的一種描述是 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數 一開始任選乙個正整數作為報數上限值m,從第乙個人開始按順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向上的下乙個人開始重新從1...