Previous Contents Next

5   Elementare Datenstrukturen

Literatur: Kapitel 11 [CLR90].
Inhalt Stacks und Queues ·verzeigerte Listen ·Bäume ·Implementierungsmöglichkeiten
Einleitung


Stacks und Queues
Stack als Array




Stack-empty(S)
  if top == 0 then return true else false;

Push(S,x)
  top    := top + 1;
  S[top] := x;

Pop(S)
  if Stack-empty(S)
  then error "underflow"
  else top  := top  -1;
       return S[top+1];




Queues als Array


Enqueue(Q,x) =
  Q[tail] := x;
  if tail == length(Q)
     then tail := 1       // start again with 1
     else tail := tail + 1;


Dequeue(Q) =
  x := Q[head]
  if head == length(Q)
     then head := 1        // start again with 1
     else head := head + 1
  return x;
  



Verzeigerte Listen
Verzeigerte Listen (2)


Operation Komplexität
(vorne) Einfügen O(1)
Löschen (bei geg. Element) O(1)
Suchen O(n)

dopelt verzeigerte Listen (3)




List-search(L,k)     // k: key  
  x  := head;
  while  x != nil and x.key != k
     do  x := next(x);

  return x;





List-insert(L,x)            // vorne Einfuegen
  next(x) := head;
  if head != nil then prev(head) := x
     head := x;
  prev(x) := nil;

List-delete(L,x)
  if prev(x) != nil
     then next(prev(x)) := next(x)
     else          head := next(x)
  if next(x) != nil
     then prev(next(x)) := prev(x); 



February 5, 2002
Previous Contents Next