讓你更好的了解鍊錶 鍊錶解決猴子,小朋友報數問題

2021-06-29 02:37:04 字數 868 閱讀 3178

簡要分析一下題目,就是總共多少個小朋友,從第乙個小朋友開始報數,比如報到3就退出乙個,當剩下最後乙個小朋友時,讀出他的編號,並且退出。

關於這個題目的邏輯關係就是線性關係,而像這種線性關係一般都是相對非線性關係比較好解,這個題目在網上也有多種多樣的解法,比如靜態陣列解法,動態陣列解法,約瑟夫環等等,由於是線性關係,所以樓樓想到鍊錶也是可以解的,解法就是迴圈鍊錶,個人感覺,除了約瑟夫環,和別的解法效率差不多,但是好處就是資料對題目的立體化,個性化,以及層次化!

**如下:

#include

using namespace std;

/**left 的指向就是小朋友左手邊的小朋友

*right 的指向就是小朋友右手邊的小朋友

num 指的就是小朋友自己的編號

*/typedef struct lnodelnode, *link;

/*建立鍊錶,使小朋友圍成乙個圈

注意的是到最後乙個小朋友時,之前的

第乙個小朋友要單獨出乙個指標變數寄存,

這樣第乙個小朋友的左手就能牽到最後乙個小朋友的右手了!

*/void creatlink(link &pp, int k)

p1 = l;}}

void deletelink(link &k1)

int main()

deletelink(p);

p = p -> right;

k--;

}cout}小小分析下,鍊錶的好處,大家也知道,對於刪除乙個元素來的非常之快,非常之簡便,所以當刪除的時候,把該要被刪除的孩子的左手邊的孩子的右手,牽住要被刪除的孩子的右手邊的左手,那麼久牽手成功,哈哈,是不是有點繞啊!

個人感覺用煉表解這個題目更加簡單明瞭,許多變數,計數器啊也省去了不少!

借助鍊錶解決猴子選大王問題 約瑟夫環問題

q 一群猴子,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈。從第1只開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。輸入m和n,輸出為大王的猴子是幾號。a 用乙個迴圈單鏈表來表示這一群猴子。節點含有0 乙個儲存猴子的編號,乙個為指...

為什麼會有鍊錶?鍊錶解決了什麼問題? C語言

title 為什麼會有鍊錶?鍊錶如何使用?date 2020 04 01 16 30 10 author jf blog summary 鍊錶如何使用?tags c語言 鍊錶 categories c語言 或許這是讓每乙個it初學者很頭痛的問題,明明我們在之前已經接觸了陣列,感到陣列已經是萬能的資料...

使用靜態鍊錶解決複雜問題的步驟

如下 struct nodenode 100010 上面的定義中,我們把結點的位址 資料域 指標域都進行了定義,並且留了乙個 來適應不同的題目 例如可以設定為結點是否為鍊錶上的乙個結點 在程式的開始,對靜態鍊錶進行初始化。一般來說,需要對定義中的 進行初始化,將其定義為正常情況下達不到的數字 一般來...