Graphviz链接列表箭头尾部原点

时间:2013-03-19 12:00:24

标签: linked-list graphviz

我想绘制一个垂直对齐的链表,就像维基共享资源中的那个:

Credit: wikimedia commons

到目前为止,我最好的拍摄是:

digraph foo {
        rankdir=LR;
        node [shape=record];
        a [label="{ <data> 12 | <ref> }"]
        b [label="{ <data> 99 | <ref> }"];
        c [label="{ <data> 37 | <ref> }"];
        d [shape=box];
        a:ref -> b:data [arrowhead=vee, arrowtail=dot, dir=both];
        b:ref -> c:data [arrowhead=vee, arrowtail=dot, dir=both];
        c:ref -> d      [arrowhead=vee, arrowtail=dot, dir=both];
}

给出了:

enter image description here

如何设置arrowtail点来自记录中,并将d记录设置为X节点?

我已经尝试了tailclip=false,没有运气。

1 个答案:

答案 0 :(得分:1)

您需要设置tailclip=false 为边缘的尾端指示罗盘点

digraph foo {
        rankdir=LR;
        node [shape=record];
        edge [tailclip=false];
        a [label="{ <data> 12 | <ref> }"]
        b [label="{ <data> 99 | <ref> }"];
        c [label="{ <data> 37 | <ref> }"];
        d [shape=box];
        a:ref:c -> b:data [arrowhead=vee, arrowtail=dot, dir=both];
        b:ref:c -> c:data [arrowhead=vee, arrowtail=dot, dir=both];
        c:ref:c -> d      [arrowhead=vee, arrowtail=dot, dir=both];
}

graphviz output

不幸的是,最后一个节点所需的形状不包含在default shapes可用的中。你可以使用postscript或位图图像添加custom shape,如果使用SVG输出,甚至可以添加SVG