User interfaces:
% user defined data
\def\list
{
Jeff,
Audrey,
,
Donna,
A.L.,
,
Tootie,
,
Dave,
Mark,
Al
}% list of elements
\const{_X1}{1}% column 1 width
\const{_X2}{2}% column 2 width
\const{_X3}{1}% column 3 width
\const{_X4}{1}% space for arrow arms
\const{_Y}{0.5}% row height

\documentclass[pstricks,border=3pt]{standalone}
\usepackage{pstricks-add,fp}
\psset{dimen=middle}
\makeatletter
\newcommand\const[3][\FPeval]{% #1=method, #2=name, #3=data
\expandafter#1\csname#2\endcsname{#3}%
\begingroup\edef\x{\endgroup
\noexpand\pstVerb{/#2 \csname#2\endcsname\space def}}\x
}
\newcount\const@count
\def\FPnset#1#2{%
\const@count=\z@
\@for\next:=#2\do{\advance\const@count\@ne}%
\edef#1{\number\const@count}%
}
\makeatother
% user defined data
\def\list
{
Jeff,
Audrey,
,
Donna,
A.L.,
,
Tootie,
,
Dave,
Mark,
Al
}% list of elements
\const{_X1}{0.6}% column 1 width
\const{_X2}{2}% column 2 width
\const{_X3}{1}% column 3 width
\const{_X4}{1.03}% space for arrow arms
\const{_Y}{0.5}% row height
% internal used constants
\const[\FPnset]{_N}{\list}% number of nodes
\const{_x1}{_X1*0.5}
\const{_x2}{_X1+_X2*0.5}
\const{_x3}{_X1+_X2+_X3*0.5}
\const{_OX1}{_X1}
\const{_OX2}{_X1+_X2}
\const{_OX3}{_X1+_X2+_X3}
\const{_y}{_Y/2}
\const{_OY}{_Y}
\const{CanvasHeight}{_OY*_N}
\const{CanvasWidth}{_OX3+_X4}
\def\node#1#2{%
\const{counter}{round((#2+1):0)}%
\rput(!0 _OY neg counter mul){%
\psframe(!_OX1 0)(!_OX3 _OY)%
\rput(!_x1 _y){\counter}
\rput(!_x2 _y){#1}%
\psline(!_OX2 0)(!_OX2 _OY)%
\pnode(!_x3 _y){node\counter}%
}}
\begin{document}
\begin{pspicture}(\CanvasWidth,-\CanvasHeight)
\psforeach{\i}{\list}{\node{\i}{\the\psLoopIndex}}
\psset
{
arrowscale=2,
dotsize=1pt,
arrows=*->,
linearc=\pslinewidth,
linecolor=blue,
}
\ncdiag[arm=1.5]{node2}{node11}
\ncbar[arm=1]{node5}{node10}
\ncdiag[arm=0.75,angle=180]{node11}{node9}
\end{pspicture}
\end{document}