【发布时间】:2019-10-17 03:00:21
【问题描述】:
我正在尝试将一个元素添加到双向链表的前面,但是,我得到了正确的输出形式,但循环节点的值显示:{content = < cycle >},而它应该只是说@ 987654322@.
add_head: (float * 'a) -> ('a lcell) ref -> unit
(* The type of linked lists. *)
type 'a llist =
| Nil
| Cons of (float * 'a) * 'a lcell * 'a lcell
and 'a lcell = ('a llist) ref
let add_head x head =
match !(!head) with
|Nil -> head := !(singleton x)
|Cons (e, prev, next) ->
let first = ref (Cons (x, ref Nil, ref !(!head))) in
prev := !first;
head := first
这是输出的样子:
{contents =
Cons ((3.3, "c"), {contents = Nil},
{contents =
Cons ((1.2, "b"), <cycle>,
{contents = Cons ((2.2, "a"),<cycle>, {contents = Nil})})})}}
这是我的输出:
{contents =
Cons ((3.3, "c"), {contents = Nil},
{contents =
Cons ((1.2, "b"), {contents =<cycle>},
{contents = Cons ((2.2, "a"), {contents =<cycle>}, {contents = Nil})})})}}
对于为什么会发生这种情况以及我不理解的任何帮助?
【问题讨论】:
-
你的字体是什么样的?添加元素的代码在哪里?您尝试了什么可以提供上述数据?
-
请不要破坏您自己的问题。如果您不希望在此处使用您的代码,那么您一开始就不应该发布它。
标签: linked-list ocaml doubly-linked-list