你在一間音樂串流公司工作。
你的任務是為你的音樂播放器應用程式打造播放清單功能。
寫一個音樂播放器應用程式的原型。
在這個原型中,每首歌只用一個數字來代表。 給定一段數字範圍(也就是歌曲 ID),請建立一個單向鏈結串列。
給定一個單向鏈結串列,你應該要能反轉這個串列,讓歌曲以相反的順序播放。
鏈結串列是電腦科學中一種基礎的資料結構,常用來實作其他資料結構。
最簡單的鏈結串列是單向鏈結串列。 這表示每個元素(或稱「節點」)都包含資料,以及某個指向串列中下一個節點的東西。
如果你想更深入了解鏈結串列,可以看看這篇文章,裡面用很棒的圖解說明了這個概念。
定義一個linked-list-node元組。
定義一個linked-list元組,並提供一個M: linked-list length方法(來自sequences),讓測試可以直接在你的連結串列上呼叫length。
<linked-list> ( -- linked-list ):建構一個空的連結串列。>linked-list ( seq -- linked-list ):依序把seq的每個元素推入一個全新的連結串列。linked-list>array ( linked-list -- array ):回傳所有值,最上面的元素排在最前面。list-push ( linked-list value -- linked-list ):把一個值推入頂端。list-pop ( linked-list -- linked-list value ):移除並回傳最上面的值。list-peek ( linked-list -- value ):回傳最上面的值,但不移除它。list-reverse ( linked-list -- linked-list ):回傳一個元素順序相反的連結串列。當連結串列為空時,從list-pop和list-peek拋出list-empty錯誤類別。