約瑟夫環(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);
}
相關文章
- 約瑟夫(Josephus problem)環問題初探
- 連結串列面試題(八)---約瑟夫環面試題
- java環形連結串列約瑟夫環問題筆記Java筆記
- 約瑟夫環 佇列+連結串列佇列
- javascript中使用迴圈連結串列實現約瑟夫環問題JavaScript
- 迴圈連結串列(約瑟夫問題)--python實現Python
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- 約瑟夫環遊戲遊戲
- 3.2資料結構之指標和連結串列 1748:約瑟夫問題資料結構指標
- 約瑟夫生者死者遊戲問題遊戲
- JS資料結構第三篇---雙向連結串列和迴圈連結串列之約瑟夫問題JS資料結構
- 實戰資料結構(4)_迴圈單連結串列解決約瑟夫問題資料結構
- 陣列解決約瑟夫環問題陣列
- 約瑟夫問題pascal程式
- IOS 約瑟夫環遊戲的實現iOS遊戲
- 約瑟夫環問題——初步瞭解+陣列實現陣列
- Josephus問題解決方法三(單向迴圈連結串列標識法)
- 面試題—Java遞迴實現約瑟夫環面試題Java遞迴
- P1996 約瑟夫問題996
- (連結串列)連結串列的排序問題排序
- 約瑟夫環(vector類解決)
- 約瑟夫環(陣列實現)陣列
- 約瑟夫環(超好的程式碼存檔)--19--約瑟夫環--LeetCode面試題62(圓圈最後剩下的數字)LeetCode面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 連結串列專題——面試中常見的連結串列問題面試
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 環形連結串列_相交連結串列_多數元素(java語言)Java
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 連結串列面試題(九)---判斷一個連結串列是否帶環面試題
- 判斷單連結串列是否存在環,判斷兩個連結串列是否相交問題詳解
- js利用指標操作約瑟夫問題程式碼例項JS指標
- 物件導向程式設計 約瑟夫問題簡要分析物件程式設計
- 單連結串列的排序問題排序
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 用Python實現約瑟夫環演算法Python演算法
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 環形連結串列II