使用 Latex 的哈希表

使用 Latex 的哈希表

希望在 LaTeX 中创建一个带有链接列表的哈希表,如下所示:

在此处输入图片描述

答案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}

相关内容