資料結構與演算法(04)

2021-10-25 02:55:44 字數 1138 閱讀 6951

josephu問題為:設編號為1

,2,...n的n個人圍坐一圈,約定編號為k(1

<=k<=n)的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。

1.約瑟夫問題--建立環形鍊錶的思路

a.先建立第乙個結點,讓first指向該節點,並形成環形

b.後面當每建立乙個新的節點,就把該節點,加入到已有的環形鍊錶中即可

2.遍歷環形鍊錶

a.先讓乙個輔助指標(變數)curboy,指向first節點

b.然後通過乙個while迴圈遍歷該環形鍊錶即可curboy.next==first結束

**實現:

約瑟夫問題--小孩出圈的思路分析圖

根據使用者的輸入,生成乙個小孩出圈的順序n=5

,即有5個人k=1

,從第乙個人開始報數m=2

,數2下

1.需求建立乙個輔助指標(變數)helper,事先應該

指向環形鍊錶的最後這個節點。

補充:小孩報數前,先讓first和helper移動k-

1次2.當小孩報數時,讓first和helper指標同時的移動m-

1次3.這時就可以將first指向的小孩節點出圈

first=first.next

helper.next=first

原來first指向的節點就沒有任何引用,就會被**

出圈的順序2-

>4-

>1-

>5-

>

3

**的實現整個約瑟夫問題**實現

演算法與資料結構學習 04 記憶體

記憶體中存在三種資料 全域性中的資料 堆中的資料 臨時堆疊中的數 據1.全域性資料 static int value 100 void process value和number的資料其實都屬於全域性資料,這裡的變數是不隨著函式的呼叫發生變化的。2.堆中的資料 void process 分配的資料就是...

資料結構04

複習 1 什麼是資料結構 是專門研究資料關係和操作的學科,而非是計算方法。資料結構 演算法 程式 2 邏輯結構和物理結構 邏輯結構 集合 除了同屬於乙個集合,資料之間沒有任何關係。表 資料之間存在一對一關係。樹 資料之間存在一對多關係。圖 資料之間存在多對多關係。物理結構 順序結構 資料存在在連續的...

python 資料結構與演算法 day04 希爾排序

思路 希爾排序其實就是插入排序的一種,把原有序列分為gap個子序列,每乙個子串行都執行插入排序的操作 是在原有序列上進行 然後把gap變小,就有會生成gap個子序列,對每乙個新的子串行繼續執行插入排序操作,gap 1時 其實就是對原有長度序列執行的插入排序 def shell sort l 希爾排序...