2

我创建了以下 graphviz 图,表示带有循环的链表:

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

不幸的是,从c:ref到的箭头b:data穿过节点c

在此处输入图像描述

如何强制边缘绕过节点而不越过它们?

4

2 回答 2

3

我找不到一个简单且完全令人满意的答案,但更改指南针点可能会有所帮助。

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

改变罗盘点

于 2015-10-02T14:29:07.793 回答
1

你可以"dot -Tsvg"为你的点文件运行,然后打开svg文件,ms visio例如,做类似的事情在此处输入图像描述

于 2013-03-24T09:41:00.540 回答