Thema: Delphi Pointer "Bäume"

Einzelnen Beitrag anzeigen

Benutzerbild von n00b_on_knees
n00b_on_knees

Registriert seit: 5. Apr 2003
128 Beiträge
 
#9

Re: Pointer "Bäume"

  Alt 24. Mär 2004, 20:57
hier der fertige code der so in etwa funktionieren müsste, leider steige ich in "fall3" irgendwie nicht richtig durch.

Delphi-Quellcode:
procedure delete(p: PDynArray; var loesch: PDynArray);
var vor: PDynArray;
begin
  vor := p;
  suchevor(loesch,vor);
  if (loesch^.left = nil) and (loesch^.right = nil) then
    free(loesch)
  else
    if (loesch^.Right = nil) then
      aufruecken(vor,loesch,loesch^.left)
    else
      if (loesch^.Left = nil) then
        aufruecken(vor,loesch,loesch^.right)
      else
        fall3(loesch);
end;

procedure aufruecken(vor,akt,nach : PDynArray);
begin
  if (vor^.Right = akt) thenvor^Right := nach
  else vor^.Left := nach;
  free(akt);
end;

procedure suchevor(loesch:PDynArray; var vor:PDynArray);
begin
  while (vor^.left <> loesch) and (vor^.right <> loesch) do
    if (vor^.Daten < loesch^.Daten) then vor := vor^.Right
    else vor := vor^.Left;
end;

procedure fall3(loesch: PDynArray);
var
  akt,akt2:PDynArray;
begin
  akt := loesch^.Left;
  akt2 := akt;
  while (akt^.Right <> nil) do
  begin
    akt2 := akt;
    akt := akt^.Right;
  end;
  loesch^.Daten := akt^.Daten;
  akt2^.Right := nil;
  free(akt);
end;
Against TCPA & And I think we should live our dreams
  Mit Zitat antworten Zitat