答案1
也可以tikz
使用节点和positioning
库。这种解决方案在连接更复杂的情况下尤其有用。
\documentclass[tikz,border=1pt]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\coordinate (0);
\foreach \t[count=\i from 0,evaluate=\i as\j using int(\i+1)] in {
110 ,
100 ,
90 ,
80 ,
70 ,
93 $\rightarrow$ 60 ,
50 ,
40 ,
96 $\rightarrow$ 30 ,
97 $\rightarrow$ 20 ,
120 $\rightarrow$ 10
}
\node at(\i.south)[anchor=north,draw,minimum height=2em,minimum width=1.5em,outer sep=0pt](\j){}
node at(\j.west)[align=right,left]{\i}
node at(\j.east)[align=left,right,xshift=-.7em]{$\rightarrow$ \t};
\end{tikzpicture}
\end{document}
编辑- 根据 OP 的评论:
您还可以在表格单元格中腾出空间来插入数字,如下所示:
\begin{tikzpicture}
\coordinate (0);
\foreach \t/\n[count=\i from 0,evaluate=\i as\j using int(\i+1)] in {
110/ ,
100/1 ,
90/12 ,
80/ ,
70/122 ,
93 $\rightarrow$ 60/111 ,
50/56 ,
40/ ,
96 $\rightarrow$ 30/ ,
97 $\rightarrow$ 20/ ,
120 $\rightarrow$ 10/34
}
\node at(\i.south)[anchor=north,draw,minimum height=2em,minimum width=2.5em,outer sep=0pt](\j){\n}
node at(\j.west)[align=right,left]{\i}
node at(\j.east)[align=left,right,xshift=-.7em]{$\rightarrow$ \t};
\end{tikzpicture}
答案2
这是tabular
一个哈希表的类似表示,包装在一个类似名称的环境中:
\documentclass{article}
\usepackage{array}
\newenvironment{hashtable}[1][]
{\begin{tabular}[#1]{
@{}
> {\small} r <{\normalsize~\rlap{\fbox{\strut~~}}$~~\rightarrow$~}
@{} l @{}}}
{\end{tabular}}
\begin{document}
\begin{hashtable}
0 & 110 \\
1 & 100 \\
2 & 90 \\
3 & 80 \\
4 & 70 \\
5 & 93 $\rightarrow$ 60 \\
6 & 50 \\
7 & 40 \\
8 & 96 $\rightarrow$ 30 \\
9 & 97 $\rightarrow$ 20 \\
10 & 120 $\rightarrow$ 10
\end{hashtable}
\end{document}