上週五六日跟高中同學出去玩,一行七人只有我是社畜,
所以我週五晚上 12 點多才去民宿跟大家會合。
週六去泛舟,人超多,教練(引擎)船們各種控場。
當天是小水位,船又大,根本翻不了,只會一直卡住,前進速度很慢。
為了讓活動如期結束,大部份的時間都是教練船後面拖一排船,大家在船上玩水看風景。
風景不錯,到出海口前仍如典型的東部峽谷,溪水縱切海岸山脈。
沿途不時有蝴蠂和小鳥,只差沒看到魚。(因為水濁,有也看不到。)
這個活動中我認為最有趣的是接船的部份,也就是從每船各自划變教練拖大家的過程。
基本上就是在接一個 singly linked list,中間斷掉的話就會 memory leak。
為什麼是 singly 呢?因為一但接了船,教練船就得一直動,免得節點隨機漂移而打結。
在引擎船的牽動下,逆向遍歷船鍊相當難,甚至想潑前船水都不容易。
這時身為碼農,就會想說 insert 應該是個 O(1) 的操作。
但實際採取的卻是 O(N) 的作法,原因有二:
- 把船鬆開再接起容易出錯,萬一整條鍊斷掉,會非常混亂。
- 接鍊尾的話,新船行近鍊上任一艘船,就能順著攀到鍊尾,教練可以少顧一點準度。
最後附上接船方法示意圖(早上畫錯了,更正一下):
- 兩個繩圈
╭船 船一口 口一船 船╮
口船船船船 船船船船口
- 一圈套一圈
口
|
╭船 船一中
口船船船船 └一船 船╮
船船船船口
- 插支槳
一毌一槳
|
╭船 船一中
口船船船船 └一船 船╮
船船船船口
- 擺正
槳
|
╭船 船╮中一毌一船 船╮
口船船船船╰十一╯ 船船船船口
|
- 拉緊
槳
╭船 船一毌毌一船 船╮
口船船船船 | 船船船船口
|
--
※ 發信站: 批踢踢兔(ptt2.cc), 來自: xxx.xxx.xxx.xxx (臺灣)
Re: 我本來想把槳都用粗體,但|有沒有粗體在我的電腦上看是一樣的…