update ana, add ipi7
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
\begin{document}
|
||||
|
||||
\begin{aufgabe}
|
||||
\begin{aufgabe} LIFO vs. FIFO
|
||||
\begin{enumerate}
|
||||
\item Kunden in einer Bäckerei
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
FIFO: Die ältesten Lebensmittel müssen als erstes verbraucht werden.
|
||||
\item Autos auf einer Autofähre
|
||||
|
||||
Def. (Autofähre). Eine Fähre mit einer Auffahrt und einer Ausfahrt, jedes Auto
|
||||
befährt die Fähre nur vorwärts.
|
||||
|
||||
FIFO: Das erste Auto steht ganz vorne auf der Fähre und verlässt diese als erstes
|
||||
auf der anderen Seite.
|
||||
\item Druckanträge auf einen Drucker
|
||||
@@ -34,6 +37,33 @@
|
||||
\end{aufgabe}
|
||||
|
||||
\begin{aufgabe}
|
||||
Hase und Igel
|
||||
\begin{enumerate}[a)]
|
||||
\item Wenn kein Zyklus vorliegt, wird einer \textit{Hase} zuerst auf Null zeigen.
|
||||
Falls der Zeiger des \textit{Hasen} aber den \textit{Igel} überrundet, muss ein
|
||||
Zyklus vorliegen, Das wird dann erkannt, wenn \textit{Hase} und \textit{Igel} zum
|
||||
gleichen Zeitpunkt auf das selbe Element zeigen. Der Abstand von \textit{Hase} zu
|
||||
\textit{Igel} wird dabei immer kleiner, sodass dies in endlicher Zeit erreicht wird.
|
||||
|
||||
Die Länge des Zyklus wird erkannt durch die Differenz der Schrittzahlen, des ersten
|
||||
Aufeinandertreffens und dem zweiten.
|
||||
\item siehe \textit{haseigel.cpp}
|
||||
\end{enumerate}
|
||||
\end{aufgabe}
|
||||
|
||||
\begin{aufgabe}
|
||||
Warteschlangen
|
||||
\begin{enumerate}[a)]
|
||||
\item siehe \textit{queue\_einfach.cpp}
|
||||
\item siehe \textit{queue.cpp}
|
||||
\item Die Version der einfach verketteten Liste braucht ca. 2550 mal so lang, wie die zweite. Dies liegt
|
||||
an der Komplexität O(n) des Hinzufügens eines Elements für
|
||||
eine einfach verkettete Liste, da hier durch die ganze Liste iteriert werden muss, um das letzte
|
||||
Element zu finden. Bei einer doppelt verketteten Liste liegt eine Komplexität
|
||||
von O(1) vor, da hier direkt auf das letzte Element zugegriffen werden kann.
|
||||
Das Entfernen am Listenanfang ist immer eine O(1) Operation, weil hier direkt in beiden
|
||||
Fällen der Pointer auf das erste Element verwendet werden kann.
|
||||
\end{enumerate}
|
||||
|
||||
\end{aufgabe}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user