資料結構與演算法(4 約瑟夫環問題到迴圈鍊錶)

2021-07-03 23:39:09 字數 705 閱讀 7839

那麼如何構建環以及如何進行刪除操作是最重要的了!

構建之前,我們要有乙個已經存在的tail,有無資料不重要,
首先是構建的問題:

//實現乙個插入操作

void addelements(int

value)else

}

構建完約瑟夫之後,接下來是乙個刪除操作

/*index表示需要輸入的數*/

void delete(index)

} node * delete_element=p->next;

p->next=p->next->next;

if(delete_element==tail)

tail=p;

//c++實現,需要釋放記憶體

delete delete_element;

}

如此就可以實現乙個約瑟夫環的構建與刪除的問題,總結一下:

1、在構建的時候,首先意識到這個是乙個圓環,所以哪怕是乙個元素,也要讓它指向自己。

2、在構建新結點的時候,需要讓tail原本的關係給新結點,然後再指向新結點,不可以顛倒順序,不然會丟失原結點的關係

從約瑟夫環衍生到迴圈鍊錶,其實約瑟夫環就是乙個迴圈鍊錶,哈哈哈

資料結構 約瑟夫環問題

實驗一線性表的應用 實驗目的和要求 通過實驗進一步理解線性表的邏輯結構和儲存結構,提高使用理論知識指導解決實際問題的能力,熟練掌握鍊錶的實際應用。主要內容 題目1 josephus環問題 問題描述 約瑟夫 joseph 問題的一種描述是 編號為1,2,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼...

資料結構 約瑟夫環問題

1.問題描述 約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。鍊錶思路 我是通過單鏈表實現的,首先要思考...

資料結構 約瑟夫環問題

約瑟夫問題是個有名的問題 n個人圍成一圈,從第乙個開始報數,第m個將被殺掉,最後剩下乙個,其餘人都將被殺掉。例如n 6,m 5,被殺掉的順序是 5,4,6,2,3。分析 1 由於對於每個人只有死和活兩種狀態,因此可以用布林型陣列標記每個人的狀態,可用true表示死,false表示活。2 開始時每個人...