File:Adjacencylist linkedlistof doublelinkedlists undirectedgraph.svg
Aus Wikimedia Commons, dem freien Medienarchiv
Zur Navigation springen
Zur Suche springen
Größe der PNG-Vorschau dieser SVG-Datei: 359 × 254 Pixel. Weitere 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)
Dateiinformationen
Strukturierte Daten
Bildtexte
Beschreibung[Bearbeiten]
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[Bearbeiten]
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 |
Dateiversionen
Klicke auf einen Zeitpunkt, um diese Version zu laden.
Version vom | Vorschaubild | Maße | Benutzer | Kommentar | |
---|---|---|---|---|---|
aktuell | 19:18, 27. Jul. 2015 | 359 × 254 (53 KB) | Wdvorak (Diskussion | Beiträge) | User created page with UploadWizard |
Du kannst diese Datei nicht überschreiben.
Dateiverwendung
Die folgende Seite verwendet diese Datei:
Globale Dateiverwendung
Die nachfolgenden anderen Wikis verwenden diese Datei:
- Verwendung auf de.wikipedia.org
Metadaten
Diese Datei enthält weitere Informationen, 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 |
Strukturierte Daten
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
Versteckte Kategorien: