連結串列面試題(八)---約瑟夫環
一、結構體定義
typedef int DataType;
typedef struct ListNode//定義結點
{
DataType data;
struct ListNode* next;
}ListNode,*PListNode;
typedef struct PList//定義一個成員是指向結點的指標的結構體
{
PListNode PHead;
}PList,*PList;
二、約瑟夫環介紹
給一個迴圈單連結串列(最後一個結點的next指向第一個結點),這時形成了環,從連結串列第一個結點
開始數,每數num個結點,停下來,將第num個結點刪掉,然後從下一個結點又開始從1數起,每數num個結點,刪除一個;這樣一直迴圈著在連結串列數結點,刪結點,最後剩下一個結點。
//最後只剩下約瑟夫活著(哈哈)
三、函式實現
PListNode JosephCycle(PListNode PHead,int num)
{
PListNode cur=PHead;
PListNode del=PHead;
int k=0;
if (PListNode==NULL)
{
return NULL;
}
while (1)
{
if (cur==cur->next)//如果只剩下一個結點,則這個結點就是最後剩下的結點
break;
k=num;
while (--k)//每走num-1步即可到達要刪除的結點位置;
{
cur=cur->next;
}
//用值交換法,刪除結點
printf("killed:%d",cur->data);
del=cur->next;
cur->data=del->data;
cur->next=del->next;
free(del);
}
return cur;
}
相關文章
- 約瑟夫環 佇列+連結串列佇列
- java環形連結串列約瑟夫環問題筆記Java筆記
- 約瑟夫環(Josephus)問題--報數遊戲(連結串列)遊戲
- javascript中使用迴圈連結串列實現約瑟夫環問題JavaScript
- 迴圈連結串列(約瑟夫問題)--python實現Python
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- 面試題—Java遞迴實現約瑟夫環面試題Java遞迴
- 3.2資料結構之指標和連結串列 1748:約瑟夫問題資料結構指標
- JS資料結構第三篇---雙向連結串列和迴圈連結串列之約瑟夫問題JS資料結構
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 約瑟夫環遊戲遊戲
- 實戰資料結構(4)_迴圈單連結串列解決約瑟夫問題資料結構
- 約瑟夫(Josephus problem)環問題初探
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 陣列解決約瑟夫環問題陣列
- 連結串列面試題(九)---判斷一個連結串列是否帶環面試題
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 約瑟夫環(超好的程式碼存檔)--19--約瑟夫環--LeetCode面試題62(圓圈最後剩下的數字)LeetCode面試題
- 約瑟夫環(vector類解決)
- 約瑟夫環(陣列實現)陣列
- 連結串列專題——面試中常見的連結串列問題面試
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 連結串列面試題(十二)---判斷兩個都不帶環的連結串列是否相交面試題
- 約瑟夫問題pascal程式
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- IOS 約瑟夫環遊戲的實現iOS遊戲
- 約瑟夫環問題——初步瞭解+陣列實現陣列
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- 約瑟夫生者死者遊戲問題遊戲
- 連結串列面試題(四)---查詢連結串列的中間節點面試題
- 搞懂單連結串列常見面試題面試題
- 面試中HashMap連結串列成環的問題你答出了嗎面試HashMap
- 連結串列面試題(六)---刪除單連結串列倒數第k個結點面試題
- P1996 約瑟夫問題996
- (連結串列)連結串列的排序問題排序
- 用Python實現約瑟夫環演算法Python演算法