www.wikidata.de-de.nina.az
Als Sentinel Aussprache sentinel engl fur Wachter Wachterknoten oder Wachterwert im engeren Sinn bezeichnet man in der Informatik im Bereich der Programmierung ein Konstrukt welches eine Sequenz derart terminiert dass die Programmlogik nach einer erfolglosen Inspektion aller echten Falle abschliessend mit unechtem Erfolg auf das Ergebnis gefunden lauft 1 Wenn so geschehen wird nachtraglich das Ergebnis auf nicht gefunden korrigiert Mit diesem Trick wird die Anzahl der Abfragen innerhalb der Suchschleife um eine namlich die Abfrage auf das Ende der Sequenz verringert auf Kosten geringfugig komplizierterer Erfordernisse und Aktionen ausserhalb der Schleife Im weiteren Sinn gilt insbesondere im englischen Sprachraum jede Terminierung einer Sequenz durch ein normalerweise dort nicht vorkommendes spezielles Objekt so bspw das Nullzeichen bei Zeichenketten als Sentinel Inhaltsverzeichnis 1 Beispiel 1 1 Version mit Nullzeiger 1 2 Version mit Sentinel 2 Siehe auch 3 EinzelnachweiseBeispiel BearbeitenIn den beiden folgenden C Funktionen Search und SearchWithSentinel soll in einer einfach verketteten Liste vom Typ struct sll node ein Knoten der verketteten Liste sll int key struct sll node next gt nachster Knoten oder Terminator der Liste sll first Zeiger auf die verkettete Liste nach einem Schlusselwert search key gesucht werden bei gleichem Suchergebnis Version mit Nullzeiger Bearbeiten Die Liste sll wird terminiert durch den Nullzeiger NULL 2 first NULL Terminierung vor der ersten Einfugung NB Die nicht gezeigten Operationen Einfugen und Loschen haben fur den immer gleichen Terminator hier NULL zu sorgen struct sll node Search int search key struct sll node node for node first node NULL node node gt next if node gt key search key return node gefunden return NULL nicht gefunden Die for Schleife enthalt pro Schleifenschritt die zwei gelb hinterlegten Abfragen if node NULL und if node gt key search key Version mit Sentinel Bearbeiten Der Zeiger sentinel zum Objekt Sentinel dient als Terminator der verketteten Liste sll Das Objekt Sentinel ist fur die Schleife gezielt zu praparieren In diesem Sinn ist es Teil der Datenstruktur sll struct sll node Sentinel sentinel amp Sentinel sentinel gt next sentinel first sentinel Terminierung vor der ersten Einfugung NB Die nicht gezeigten Operationen Einfugen und Loschen haben fur den immer gleichen Terminator hier Zeigerwert zu sorgen struct sll node SearchWithSentinel int search key struct sll node node gezielte Praparation sentinel gt key search key for node first node gt key search key node node gt next if node sentinel return node gefunden return NULL nicht gefunden Die for Schleife enthalt pro Schleifenschritt nur die eine gelb hinterlegte Abfrage if node gt key search key BemerkungDie Einfuhrung des Wachterknotens macht aus der Operation Suchen die ohne ihn eine Nur Lese Operation ware eine modifizierende Operation ahnlich Einfugen und Loschen Wird auf die Datenstruktur parallel konkurrent zugegriffen dann gehort auch das Suchen per SearchWithSentinel in einen kritischen Abschnitt der durch ein Mutex abgesichert werden muss Dieser zusatzliche Aufwand kann schwerer wiegen als das Einsparen einer Abfrage pro Schleifenschritt Siehe auch BearbeitenBinarer Suchbaum Suchen ohne Duplikate iterativ und mit Sentinel Wachterknoten in einem binaren Suchbaum Sentinel Lymphknoten siehe WachterlymphknotenEinzelnachweise Bearbeiten Kurt Mehlhorn Peter Sanders Algorithms and Data Structures The Basic Toolbox Springer Berlin Heidelberg 2008 ISBN 978 3 540 77977 3 S 63 doi 10 1007 978 3 540 77978 0 3 Representing Sequences by Arrays and Linked Lists Ein Zeiger der den Wert 0 haben kann muss vor der Dereferenzierung ohnehin auf 0 abgefragt werden da die Dereferenzierung sonst auf den meisten Betriebssystem Maschinen Kombinationen zum Crash fuhrt Abgerufen von https de wikipedia org w index php title Sentinel Programmierung amp oldid 211422126