Datei:Adjacencylist linkedlistof doublelinkedlists undirectedgraph.svg
aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen
Zur Suche springen
Größe der PNG-Vorschau dieser SVG-Datei: 359 × 254 Pixel. Weitere aus SVG automatisch erzeugte PNG-Grafiken in verschiedenen Auflösungen: 320 × 226 Pixel | 640 × 453 Pixel | 1.024 × 725 Pixel | 1.280 × 906 Pixel | 2.560 × 1.811 Pixel
Originaldatei (SVG-Datei, Basisgröße: 359 × 254 Pixel, Dateigröße: 53 KB)
Diese Datei und die Informationen unter dem roten Trennstrich werden aus dem zentralen Medienarchiv Wikimedia Commons eingebunden.
Beschreibung
BeschreibungAdjacencylist linkedlistof doublelinkedlists undirectedgraph.svg |
Deutsch: Adjazenzlisten des ungerichteten Graphen in implementiert mit einer einfach verketteten Liste der Knoten und einfach verketteten Adjazenzlisten.
English: Adjacencylist of a graph implemented as linked list of double linked lists.
Created using the tikz package and compiled with pdflatex. \documentclass{standalone}
\usepackage{ifthen}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,shapes.multipart,arrows}
\tikzstyle{pointer}=[fill=black, circle, minimum width = 3pt, inner sep=0]
\tikzstyle{link}=[>=stealth]
% \tikzstyle{array}=[draw, fill=green!50, minimum width = 7mm, minimum height = 7mm]
\tikzstyle{list_node_horizontal}=[draw, rectangle split, rectangle split parts=3, rectangle split horizontal,
rounded corners=2pt,minimum height=5mm, minimum width=15mm, node distance=8mm,fill=red!35]
\tikzstyle{list_node_vertical}=[draw, rectangle split, rectangle split parts=2,
rounded corners=2pt,minimum height=10mm, minimum width=5mm, node distance=5mm,fill=green!40]
\tikzstyle{nil}=[draw, rectangle,minimum height=4mm, minimum width=4mm, node distance=5mm]
\def\Adjacencylist#1{%
% Draw left nil pointer
\node[nil, right = of rightpointer0] (leftnil) {};
\draw (leftnil.north east) -- (leftnil.south west);
\draw (leftnil.north west) -- (leftnil.south east);
\coordinate (node0) at (leftnil); % shift list to the right
% Draw Adjacency List
\foreach [count=\j] \element in \adlist {
% a counter the refers to the previous node
\prevnode=\j
\advance\prevnode by -1
% draw the node from the list with a left and a right pointer
\node[list_node_horizontal,right = of node\the\prevnode] (node\j) {\nodepart{two} \element};
\path[-] let \p1 = (node\j.three), \p2 = (node\j.center) in
node[pointer] (rightpointer\j) at (\x1+2,\y2){};
\path[-] let \p1 = (node\j.text), \p2 = (node\j.center) in
node[pointer] (leftpointer\j) at (\x1+2,\y2){};
%draw incomming link from previous node
\draw[link, bend left=15mm,->] (rightpointer\the\prevnode) edge (node\j);
% if we are not at the first node we draw an edge to to previous node
\ifthenelse{\j > 1}{\draw[link, bend left=5mm,->] (leftpointer\j) edge (node\the\prevnode);}{}
}
%Check if list is empty
\ifthenelse{\j > 0}{ %non-empty list
% Draw right nil pointer
\node[nil, right = of rightpointer\j] (rightnil) {};
\draw (rightnil.north east) -- (rightnil.south west);
\draw (rightnil.north west) -- (rightnil.south east);
% Draw edges to both nil pointer nodes
\path [link,->] (rightpointer\j) edge (rightnil)
(leftpointer1) edge (leftnil);
}
{% empty list
% Use the ledt nil pointer as nil pointer for the whole list
\path [link,bend left=10mm,->] (rightpointer0) edge (leftnil);
}
}
\newcount\prevnode
\begin{document}
% Define graph as a list of pairs, where each pair consists of a node, the delimiter "/" and the set of adjacent nodes.
\newcommand{\inputgraph}{a/{d,b,d,e}, b/{c,a}, c/{b,d}, d/{a,a,c}, e/{a}}
% Draw array and adjacency lists
\begin{tikzpicture}
\node (bottompointer0) at (0,0) {};
\foreach [count=\i] \index/\adlist in \inputgraph {
% a counter the refers to the previous node
\prevnode=\i
\advance\prevnode by -1
% draw the node from the list of graph vertices and a pointer to the next vertex
\node[list_node_vertical,below = of bottompointer\the\prevnode] (vnode\i){\index};
\path[-] let \p1 = (vnode\i.two), \p2 = (vnode\i.two west) in
node[pointer] (bottompointer\i) at (\x1+2,\y2){};
%draw incomming link from previous node
\draw[link,->] (bottompointer\the\prevnode) edge (vnode\i);
%set starting points for the adjacency list
\node (rightpointer0) at (vnode\i) {};
\coordinate (node0) at (vnode\i);
%draw adjacency list
\Adjacencylist{\adlist}
}
% Draw nil pointer (for the list of vertices)
\node[nil, below = of bottompointer\i] (bottomnil) {};
\draw (bottomnil.north east) -- (bottomnil.south west);
\draw (bottomnil.north west) -- (bottomnil.south east);
% Draw edge to nil pointer node
\path [link,->] (bottompointer\i) edge (bottomnil);
\end{tikzpicture}
\end{document}
|
Datum | |
Quelle | Eigenes Werk |
Urheber | Wdvorak |
Lizenz
Ich, der Urheber dieses Werkes, veröffentliche es unter der folgenden Lizenz:
Diese Datei wird unter der Creative-Commons-Lizenz „CC0 1.0 Verzicht auf das Copyright“ zur Verfügung gestellt. | |
Die Person, die das Werk mit diesem Dokument verbunden hat, übergibt dieses weltweit der Gemeinfreiheit, indem sie alle Urheberrechte und damit verbundenen weiteren Rechte – im Rahmen der jeweils geltenden gesetzlichen Bestimmungen – aufgibt. Das Werk kann – selbst für kommerzielle Zwecke – kopiert, modifiziert und weiterverteilt werden, ohne hierfür um Erlaubnis bitten zu müssen.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse |
In dieser Datei abgebildete Objekte
Motiv
Einige Werte ohne einen Wikidata-Eintrag
27. Juli 2015
image/svg+xml
d7ca0947edad8bff4cd7a04cc05d1417d66f7139
54.670 Byte
254 Pixel
359 Pixel
Dateiversionen
Klicke auf einen Zeitpunkt, um diese Version zu laden.
Version vom | Vorschaubild | Maße | Benutzer | Kommentar | |
---|---|---|---|---|---|
aktuell | 21:18, 27. Jul. 2015 | 359 × 254 (53 KB) | Wdvorak | User created page with UploadWizard |
Dateiverwendung
Die folgende Seite verwendet diese Datei:
Metadaten
Diese Datei enthält weitere Informationen (beispielsweise Exif-Metadaten), die in der Regel von der Digitalkamera oder dem verwendeten Scanner stammen. Durch nachträgliche Bearbeitung der Originaldatei können einige Details verändert worden sein.
Breite | 287.295pt |
---|---|
Höhe | 203.506pt |