約瑟夫環(Josephus)問題--報數遊戲(連結串列)
報數離開佇列遊戲
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Node;
Node *createList(int total);
void Josephus(struct Node *p1, int total, int from, int count);
int main(int argc, char const *argv[])
{
int total, from, count;//total總人數,from第一個報數的人 , count出列者喊的數
struct Node *L=NULL;
scanf("%d%d%d", &total, &from, &count);
L = createList(total);
Josephus(L, total, from, count);
return 0;
}
Node *createList(int total)
{
struct Node *p=NULL, *head=NULL;
int i;
for(i=1; i<=total; i++)
{
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = i;
if(head == NULL)
{
head = newNode;
}
else
{
p->next = newNode;
}
p = newNode;
}
p->next = head;//迴圈連結串列
return head;
}
void Josephus(struct Node *p1, int total, int from, int count)
{
int i;
for(i=1; i<from; i++)
{
p1 = p1->next;//將指標定位到表示第一個報數的人的結點處
}
struct Node *p2=NULL;
//迴圈的刪除佇列中報數到count的結點
while(p1->next != p1)//只剩首位相連的最後一個節點時結束
{
for(i=1; i<count; i++)
{
p2 = p1;
p1 = p1->next;//p1定位出出列者結點p2為其前一個結點
}
p2->next = p1->next;
printf("Delete number: %d\n", p1->data);
free(p1);
p1 = p2->next;//恢復p1不斷指向新節點的功能
}
printf("The last one is NO.%d\n", p1->data);
}
相關文章
- java環形連結串列約瑟夫環問題筆記Java筆記
- 迴圈連結串列(約瑟夫問題)--python實現Python
- 約瑟夫環(約瑟夫問題)求最後出列的人數
- 約瑟夫環遊戲遊戲
- 約瑟夫環問題
- 約瑟夫生者死者遊戲問題遊戲
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- 約瑟夫問題
- 約瑟夫環問題 猴子選大王問題
- JS資料結構第三篇---雙向連結串列和迴圈連結串列之約瑟夫問題JS資料結構
- 約瑟夫問題(丟手絹問題)
- 猴子選大王,約瑟夫問題
- zcmu1862——zbj的狼人殺(約瑟夫環問題)
- UVALive 3882--And Then There Was One+約瑟夫環問題變形
- 約瑟夫環(陣列實現)陣列
- 約瑟夫環(vector類解決)
- 約瑟夫環(超好的程式碼存檔)--19--約瑟夫環--LeetCode面試題62(圓圈最後剩下的數字)LeetCode面試題
- 約瑟夫環(線性列表的思想)
- 用Python實現約瑟夫環演算法Python演算法
- 洛谷題單指南-線性表-P1996 約瑟夫問題996
- 單連結串列有環的幾個問題
- 單連結串列建立連結串列出現問題
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 【圖解經典演算法題】如何用一行程式碼解決約瑟夫環問題圖解演算法行程
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 連結串列專題——面試中常見的連結串列問題面試
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- C語言陣列實現約瑟夫環出圈問題 程式碼詳細註釋 簡單易懂C語言陣列
- 連結串列-3n+1數列問題
- 連結串列反轉問題
- 約瑟夫問題,輸入總人數,自動產生大於0小於n的隨機數隨機
- 反轉連結串列系列問題
- 單連結串列的排序問題排序
- 環形連結串列
- 【連結串列問題】刪除單連結串列的中間節點
- 尋找連結串列相交結點問題
- 單連結串列成環