我將如何創建一個鏈接列表來保存Ocaml中的數據?我試圖做一個單獨的鏈接列表,但即時通訊語法有問題。我只想創建一個模塊,只需從鏈表中獲取'a,插入'a或刪除'a。鏈接列表Ocaml
任何人有什麼想法?
感謝, 費薩爾阿比德
我將如何創建一個鏈接列表來保存Ocaml中的數據?我試圖做一個單獨的鏈接列表,但即時通訊語法有問題。我只想創建一個模塊,只需從鏈表中獲取'a,插入'a或刪除'a。鏈接列表Ocaml
任何人有什麼想法?
感謝, 費薩爾阿比德
正如aneccodeal告訴的那樣,ocaml已經有了列表。
但是,爲了您的利益,這是您如何建立自己的清單。顯然,你永遠不會在真正的應用程序中使用它:)如果你想要一些樹,數據結構將非常相似。
exception Empty_list
type 'a my_list = Nil | List of 'a * 'a my_list
let head = function
Nil -> raise Empty_list
| List(e,_) -> e;;
let tail = function
Nil -> Nil
| List(_,t) -> t
let l = List(1, List(4, List(8, Nil)));;
print_endline (string_of_int(head l));;
print_endline (string_of_int (head(tail l)));;
不OCaml中已經列出函數?我從大學以來就沒有完成SML,但我似乎記得原始數據是head
和tail
。我看到其他人已經在那裏實現了一個真正的鏈表數據結構,但是...例如,檢查出Dustin's OCaml Linkedlist。
嗯讓我檢查一下(達斯汀的東西)。謝謝 – 2009-11-15 21:11:03
OCaml有內置的列表:
整數列表: [1; 2; 3; 4; 5]; 返回:int list = [1; 2; 3; 4]
字符串列表: [「this」;「that」;「other」] ;; 返回:string list = [「this」; 「那」; 「其他」]
或者你可以使用利弊操作::建立名單:
1 :: 2 :: 3 :: []; 返回:int list = [1; 2; 3]
爲了得到一個列表的頭(第一項):
List.hd [1; 2; 3]
返回1
爲了得到一個列表的尾部(所有項目在第一項之後)
List.tl [1; 2; 3] 返回:int list = [2;
爲OCaml的[安裝位置] /lib/ocaml/std-lib/list.ml
:3]此外,您還可以通過觀察來看看如何列出了OCaml的標準庫實現
然而,那有資格作爲一個LinkedList,與節點等? – 2009-11-15 21:09:54
@Failsal:是的。雖然它真的是一個堆棧(一個鏈接列表構建的數據結構),所以您只能從列表的前端推送和彈出節點。 – Juliet 2009-11-15 21:16:47
剛剛在我的回答結尾添加了這個:你可以看看如何在OCaml標準庫中實現列表: [OCaml的安裝位置] /lib/ocaml/std-lib/list.ml – aneccodeal 2009-11-15 21:19:08
是否有這個功課?如果是這樣,請標記爲這樣。 – 2009-11-15 20:53:06
它並不是真正的家庭作業,只是閱讀一本有關數據結構的書籍,並且試圖在Ocaml中實現它。 – 2009-11-15 21:09:19