<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.flbk-hamm.de/index.php?action=history&amp;feed=atom&amp;title=Schlange</id>
	<title>Schlange - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flbk-hamm.de/index.php?action=history&amp;feed=atom&amp;title=Schlange"/>
	<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Schlange&amp;action=history"/>
	<updated>2026-09-21T01:35:56Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FLBK-Wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Schlange&amp;diff=2965&amp;oldid=prev</id>
		<title>Flbkwikiadmin am 4. September 2026 um 07:26 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Schlange&amp;diff=2965&amp;oldid=prev"/>
		<updated>2026-09-04T07:26:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 4. September 2026, 09:26 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l113&quot;&gt;Zeile 113:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 113:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Laufzeitanalyse (Komplexität) ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Laufzeitanalyse (Komplexität) ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Warteschlangen lassen sich in der Praxis äußerst effizient über Arrays mit Ringpuffer-Logik oder über einfach verkettete Listen implementieren. Eine Zeigerstruktur, die stets den Anfang (Front) und das Ende (Tail) speichert, garantiert hochperformante Speicher- und Lesezugriffe. Für die oben genannten Methoden ergibt sich gemäß der [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Landau&lt;/del&gt;-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Symbole&lt;/del&gt;|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Landau&lt;/del&gt;-Notation]] folgende Laufzeitkomplexität:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Warteschlangen lassen sich in der Praxis äußerst effizient über Arrays mit Ringpuffer-Logik oder über einfach verkettete Listen implementieren. Eine Zeigerstruktur, die stets den Anfang (Front) und das Ende (Tail) speichert, garantiert hochperformante Speicher- und Lesezugriffe. Für die oben genannten Methoden ergibt sich gemäß der [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;O&lt;/ins&gt;-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Notation&lt;/ins&gt;|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;O&lt;/ins&gt;-Notation]] folgende Laufzeitkomplexität:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff:1.41:old-2964:rev-2965:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Schlange&amp;diff=2964&amp;oldid=prev</id>
		<title>Flbkwikiadmin: Die Seite wurde neu angelegt: „== Einführung == In der Informatik bezeichnet eine &#039;&#039;&#039;Warteschlange&#039;&#039;&#039; oder &#039;&#039;&#039;Schlange&#039;&#039;&#039; (englisch &#039;&#039;Queue&#039;&#039;) eine grundlegende und häufig eingesetzte dynamische Datenstruktur. Sie dient der geordneten Zwischenspeicherung von Datenobjekten, bevor diese systematisch weiterverarbeitet werden.   Warteschlangen verwalten beliebige Objekte nach dem strengen &#039;&#039;&#039;FIFO-Prinzip&#039;&#039;&#039; (&#039;&#039;First-In-First-Out&#039;&#039;). Das bedeutet: Das Element, welches zuerst in die Datens…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Schlange&amp;diff=2964&amp;oldid=prev"/>
		<updated>2026-09-04T07:25:32Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== Einführung == In der Informatik bezeichnet eine &amp;#039;&amp;#039;&amp;#039;Warteschlange&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Schlange&amp;#039;&amp;#039;&amp;#039; (englisch &amp;#039;&amp;#039;Queue&amp;#039;&amp;#039;) eine grundlegende und häufig eingesetzte dynamische Datenstruktur. Sie dient der geordneten Zwischenspeicherung von Datenobjekten, bevor diese systematisch weiterverarbeitet werden.   Warteschlangen verwalten beliebige Objekte nach dem strengen &amp;#039;&amp;#039;&amp;#039;FIFO-Prinzip&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;First-In-First-Out&amp;#039;&amp;#039;). Das bedeutet: Das Element, welches zuerst in die Datens…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Einführung ==&lt;br /&gt;
In der Informatik bezeichnet eine &amp;#039;&amp;#039;&amp;#039;Warteschlange&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Schlange&amp;#039;&amp;#039;&amp;#039; (englisch &amp;#039;&amp;#039;Queue&amp;#039;&amp;#039;) eine grundlegende und häufig eingesetzte dynamische Datenstruktur. Sie dient der geordneten Zwischenspeicherung von Datenobjekten, bevor diese systematisch weiterverarbeitet werden. &lt;br /&gt;
&lt;br /&gt;
Warteschlangen verwalten beliebige Objekte nach dem strengen &amp;#039;&amp;#039;&amp;#039;FIFO-Prinzip&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;First-In-First-Out&amp;#039;&amp;#039;). Das bedeutet: Das Element, welches zuerst in die Datenstruktur eingefügt wurde, wird auch als erstes wieder entnommen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alltagsanalogie:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
Man kann sich diese Datenstruktur wie eine Warteschlange von Kunden an einer Supermarktkasse vorstellen. Der Letzte, der sich in die Schlange stellt, wird am Kopfende (&amp;#039;&amp;#039;Back&amp;#039;&amp;#039;) als Letzter bedient. Umgekehrt wird derjenige, der sich als Erstes an die Spitze (&amp;#039;&amp;#039;Front&amp;#039;&amp;#039;) angestellt hat, als Erster bedient.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise und Visualisierung ==&lt;br /&gt;
Die grundlegenden Operationen einer Warteschlange verändern ihren Zustand, indem Elemente eingefügt oder entnommen werden. In der Abbildung unten ist die Funktionsweise schematisch dargestellt:&lt;br /&gt;
&lt;br /&gt;
* Mit &amp;lt;code&amp;gt;enter&amp;lt;/code&amp;gt; (bzw. &amp;lt;code&amp;gt;enqueue&amp;lt;/code&amp;gt;) wird ein neuer Wert (im Beispiel die Zahl &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;) am Ende der Schlange (&amp;#039;&amp;#039;Back&amp;#039;&amp;#039;) hinzugefügt.&lt;br /&gt;
* Mit &amp;lt;code&amp;gt;leave&amp;lt;/code&amp;gt; (bzw. &amp;lt;code&amp;gt;dequeue&amp;lt;/code&amp;gt;) wird das am längsten gespeicherte Element (im Beispiel &amp;lt;code&amp;gt;37&amp;lt;/code&amp;gt;) an der Spitze der Schlange (&amp;#039;&amp;#039;Front&amp;#039;&amp;#039;) herausgenommen.&lt;br /&gt;
* Der einzige lesende Zugriff erfolgt über die Operation &amp;lt;code&amp;gt;front&amp;lt;/code&amp;gt;. Diese liefert das erste gespeicherte Element der Queue (hier &amp;lt;code&amp;gt;37&amp;lt;/code&amp;gt;), unter der Annahme, dass die entnehmende Operation noch nicht ausgeführt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;600&amp;quot; height=&amp;quot;200&amp;quot; viewBox=&amp;quot;0 0 600 200&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Array Boxes --&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(150, 80)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;20&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;2&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;40&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;60&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;4&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;80&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;7&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;120&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;140&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;9&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;160&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;180&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;12&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;200&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;220&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;21&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;240&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;260&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;26&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;280&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;300&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;31&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;320&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;340&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;37&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;!-- enter (enqueue) --&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;20&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;3&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;path d=&amp;quot;M 60 60 Q 60 100 130 100&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#8b0000&amp;quot; stroke-width=&amp;quot;8&amp;quot; marker-end=&amp;quot;url(#arrow-red)&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;50&amp;quot; y=&amp;quot;105&amp;quot; fill=&amp;quot;#8b0000&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;enter&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;!-- leave (dequeue) --&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(520, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;40&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;20&amp;quot; y=&amp;quot;25&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-weight=&amp;quot;bold&amp;quot; font-size=&amp;quot;16&amp;quot;&amp;gt;37&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;path d=&amp;quot;M 470 80 Q 470 40 505 40&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#8b0000&amp;quot; stroke-width=&amp;quot;8&amp;quot; marker-end=&amp;quot;url(#arrow-red)&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;440&amp;quot; y=&amp;quot;55&amp;quot; fill=&amp;quot;#8b0000&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;leave&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;!-- front --&amp;gt;&lt;br /&gt;
  &amp;lt;path d=&amp;quot;M 490 180 L 490 135&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#006400&amp;quot; stroke-width=&amp;quot;4&amp;quot; marker-end=&amp;quot;url(#arrow-green)&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;500&amp;quot; y=&amp;quot;165&amp;quot; fill=&amp;quot;#006400&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;front&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;defs&amp;gt;&lt;br /&gt;
    &amp;lt;marker id=&amp;quot;arrow-red&amp;quot; viewBox=&amp;quot;0 0 10 10&amp;quot; refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot; markerWidth=&amp;quot;6&amp;quot; markerHeight=&amp;quot;6&amp;quot; orient=&amp;quot;auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;path d=&amp;quot;M 0 0 L 10 5 L 0 10 z&amp;quot; fill=&amp;quot;#8b0000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/marker&amp;gt;&lt;br /&gt;
    &amp;lt;marker id=&amp;quot;arrow-green&amp;quot; viewBox=&amp;quot;0 0 10 10&amp;quot; refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot; markerWidth=&amp;quot;6&amp;quot; markerHeight=&amp;quot;6&amp;quot; orient=&amp;quot;auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;path d=&amp;quot;M 0 0 L 10 5 L 0 10 z&amp;quot; fill=&amp;quot;#006400&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/marker&amp;gt;&lt;br /&gt;
  &amp;lt;/defs&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch vertikal lässt sich das Konzept einer Queue anhand von Elementblöcken veranschaulichen. Hierbei rücken die Elemente wie auf einem Fließband weiter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;500&amp;quot; height=&amp;quot;200&amp;quot; viewBox=&amp;quot;0 0 500 200&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Queue elements --&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(180, 80)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;0&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;40&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;80&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;120&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;160&amp;quot; y=&amp;quot;0&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;15&amp;quot; y=&amp;quot;-10&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;16&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;Back&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;175&amp;quot; y=&amp;quot;-10&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;16&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;Front&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Enqueue element --&amp;gt;&lt;br /&gt;
  &amp;lt;rect x=&amp;quot;80&amp;quot; y=&amp;quot;10&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;path d=&amp;quot;M 95 90 Q 95 120 160 120&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot; marker-end=&amp;quot;url(#arrow-black)&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;150&amp;quot; y=&amp;quot;145&amp;quot; text-anchor=&amp;quot;end&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;18&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;Enqueue&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Dequeue element --&amp;gt;&lt;br /&gt;
  &amp;lt;path d=&amp;quot;M 390 100 Q 430 100 445 130&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot; marker-end=&amp;quot;url(#arrow-black)&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;400&amp;quot; y=&amp;quot;90&amp;quot; font-family=&amp;quot;Arial&amp;quot; font-size=&amp;quot;18&amp;quot; font-weight=&amp;quot;bold&amp;quot;&amp;gt;Dequeue&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;rect x=&amp;quot;430&amp;quot; y=&amp;quot;140&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;80&amp;quot; fill=&amp;quot;#4d4dff&amp;quot; stroke=&amp;quot;#000000&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;defs&amp;gt;&lt;br /&gt;
    &amp;lt;marker id=&amp;quot;arrow-black&amp;quot; viewBox=&amp;quot;0 0 10 10&amp;quot; refX=&amp;quot;5&amp;quot; refY=&amp;quot;5&amp;quot; markerWidth=&amp;quot;6&amp;quot; markerHeight=&amp;quot;6&amp;quot; orient=&amp;quot;auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;path d=&amp;quot;M 0 0 L 10 5 L 0 10 z&amp;quot; fill=&amp;quot;#000000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/marker&amp;gt;&lt;br /&gt;
  &amp;lt;/defs&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Spezifikation (API) ==&lt;br /&gt;
Im Kontext der objektorientierten Programmierung wird die abstrakte Datenstruktur (ADT) formal über eine wohldefinierte Schnittstelle abgebildet. Eine &amp;lt;code&amp;gt;Queue&amp;lt;/code&amp;gt; sollte über die folgenden Methoden und Konstruktoren verfügen:&lt;br /&gt;
&lt;br /&gt;
=== Konstruktor ===&lt;br /&gt;
* &amp;lt;code&amp;gt;Queue()&amp;lt;/code&amp;gt;&lt;br /&gt;
** Eine leere Schlange wird erzeugt. Der Zustand der initialisierten Schlange ist leer.&lt;br /&gt;
&lt;br /&gt;
=== Methoden ===&lt;br /&gt;
* &amp;lt;code&amp;gt;boolean isEmpty()&amp;lt;/code&amp;gt;&lt;br /&gt;
** Die Anfrage liefert den Wert &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, wenn die Schlange keine Objekte enthält. Andernfalls liefert sie &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;void enqueue(Object pObject)&amp;lt;/code&amp;gt;&lt;br /&gt;
** Das Objekt &amp;lt;code&amp;gt;pObject&amp;lt;/code&amp;gt; wird an die Schlange (hinten) angehängt. Falls &amp;lt;code&amp;gt;pObject&amp;lt;/code&amp;gt; gleich &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; ist, bleibt die Schlange unverändert.&lt;br /&gt;
* &amp;lt;code&amp;gt;void dequeue()&amp;lt;/code&amp;gt;&lt;br /&gt;
** Das erste Objekt (vorne) wird aus der Schlange entfernt. Falls die Schlange bereits leer ist, wird sie nicht verändert.&lt;br /&gt;
* &amp;lt;code&amp;gt;Object front()&amp;lt;/code&amp;gt;&lt;br /&gt;
** Die Anfrage liefert das erste Objekt der Schlange zurück, ohne dieses aus der Schlange zu entfernen (die Schlange bleibt unverändert). Falls die Schlange leer ist, wird &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
== Laufzeitanalyse (Komplexität) ==&lt;br /&gt;
Warteschlangen lassen sich in der Praxis äußerst effizient über Arrays mit Ringpuffer-Logik oder über einfach verkettete Listen implementieren. Eine Zeigerstruktur, die stets den Anfang (Front) und das Ende (Tail) speichert, garantiert hochperformante Speicher- und Lesezugriffe. Für die oben genannten Methoden ergibt sich gemäß der [[Landau-Symbole|Landau-Notation]] folgende Laufzeitkomplexität:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Operation !! 1. Best-Case !! 2. Average-Case !! 3. Worst-Case&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;enqueue(Object pObject)&amp;lt;/code&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dequeue()&amp;lt;/code&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;front()&amp;lt;/code&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isEmpty()&amp;lt;/code&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\mathcal{O}(1)&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementierungsbeispiel (Java) ==&lt;br /&gt;
Die grundlegende Struktur einer objektorientierten Implementierung als Rumpf-Klasse orientiert sich exakt an den curricularen Vorgaben. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Queue {&lt;br /&gt;
    &lt;br /&gt;
    // Verweise auf den Anfang und das Ende der Queue&lt;br /&gt;
    private Node head;&lt;br /&gt;
    private Node tail;&lt;br /&gt;
&lt;br /&gt;
    // Innere Knoten-Klasse für verkettete Listenstruktur&lt;br /&gt;
    private class Node {&lt;br /&gt;
        Object content;&lt;br /&gt;
        Node nextNode;&lt;br /&gt;
&lt;br /&gt;
        public Node(Object pContent) {&lt;br /&gt;
            content = pContent;&lt;br /&gt;
            nextNode = null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Konstruktor: Eine leere Schlange wird erzeugt.&lt;br /&gt;
     */&lt;br /&gt;
    public Queue() {&lt;br /&gt;
        head = null;&lt;br /&gt;
        tail = null;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Prüft, ob die Schlange leer ist.&lt;br /&gt;
     */&lt;br /&gt;
    public boolean isEmpty() {&lt;br /&gt;
        return head == null;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Fügt ein Objekt hinten an die Schlange an.&lt;br /&gt;
     */&lt;br /&gt;
    public void enqueue(Object pObject) {&lt;br /&gt;
        if (pObject != null) {&lt;br /&gt;
            Node newNode = new Node(pObject);&lt;br /&gt;
            if (this.isEmpty()) {&lt;br /&gt;
                head = newNode;&lt;br /&gt;
                tail = newNode;&lt;br /&gt;
            } else {&lt;br /&gt;
                tail.nextNode = newNode;&lt;br /&gt;
                tail = newNode;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Entfernt das vorderste Element aus der Schlange.&lt;br /&gt;
     */&lt;br /&gt;
    public void dequeue() {&lt;br /&gt;
        if (!this.isEmpty()) {&lt;br /&gt;
            head = head.nextNode;&lt;br /&gt;
            if (this.isEmpty()) {&lt;br /&gt;
                tail = null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Gibt das vorderste Element zurück.&lt;br /&gt;
     */&lt;br /&gt;
    public Object front() {&lt;br /&gt;
        if (this.isEmpty()) {&lt;br /&gt;
            return null;&lt;br /&gt;
        } else {&lt;br /&gt;
            return head.content;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;br /&gt;
[[Kategorie:FI I SDM]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
</feed>