Tikz를 사용하여 LaTeX에서 목록의 노드 플롯

Tikz를 사용하여 LaTeX에서 목록의 노드 플롯

tikzpicture에서 이와 같은 것을 재현하는 가장 좋은 방법은 무엇입니까?

여기에 이미지 설명을 입력하세요

답변1

여기에 이미지 설명을 입력하세요

아래 코드는 두 가지 명령을 정의합니다.

\pointer[optional for position, label, ...]{name}{node pointed to}
\element[optional for position, label, ...]{name}{data}{node pointed to}

비어 있는 것은 node pointed to널 포인터에 해당합니다.

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,shadows}
\usepackage{xifthen}
% definitions for list
\newcommand\boxsize{6mm}
\tikzset
  {cell/.style=
    {inner sep=0pt,minimum width=\boxsize,minimum height=\boxsize,
     drop shadow,fill=white},
   ptr/.style={Circle-stealth,shorten <=-1.5pt}
  }
\newcommand\pointer[3][]%
  {\node[draw,cell,#1] (#2) {};
   \ifthenelse{\isempty{#3}}%
     {\draw (#2.south west)--(#2.north east);}%
     {\draw[ptr] (#2.center)--(#3);}
  }
\newcommand\element[4][]%
  {\node[draw,cell,#1] (#2) {#3};
   \node[draw,cell,xshift=\boxsize] (#2ptr) at (#2) {};
   \ifthenelse{\isempty{#4}}%
     {\draw (#2ptr.south west)--(#2ptr.north east);}%
     {\draw[ptr] (#2ptr.center)--(#4);}
  }
\begin{document}
\begin{tikzpicture}
  \element{e1}{10}{}
  \element[left=of e1]{e2}{20}{e1}
  \element[left=of e2]{e3}{40}{e2}
  \element[left=of e3]{e4}{30}{e3}
  \pointer[left=5mm of e4,label=left:list]{list}{e4}
  \pointer[above=5mm of e4,label=above:cur]{cur}{e4}
  \pointer[above=5mm of list,label=above:prev]{prev}{}
\end{tikzpicture}
\end{document}

관련 정보