type tRefBinBaum=^tBinBaum; tBinBaum=record Wert:Integer; links,rechts:tRefBinBaum end; function BaumSumme(inRefWurzel: tRefBinBaum): integer; begin if inRefWurzel<>nil then begin if (inRefWurzel^.links=nil) and (inRefWurzel^.rechts=nil) then BaumSumme:=inRefWurzel^.Wert else BaumSumme:= inRefWurzel^.Wert+ BaumSumme(inRefWurzel^.links)+ BaumSumme(inRefWurzel^.rechts); end else BaumSumme:=0; end;
function BaumSumme(inRefWurzel: tRefBinBaum): integer; begin if inRefWurzel<>nil then begin BaumSumme:= inRefWurzel^.Wert+ BaumSumme(inRefWurzel^.links)+ BaumSumme(inRefWurzel^.rechts); end else BaumSumme:=0; end;
program liste;
type tRefDVElement=^tDVElement; tDVElement=record Wert:integer; next,prev:tRefDVElement end; procedure DVListenElementEntfernen(var ioKopf: tRefDVElement; inZahl: integer);
var hilfezeiger: tRefDVElement; gefunden: boolean; begin if ioKopf<>nil then begin hilfezeiger:= ioKopf; gefunden := false; while (not gefunden) and (hilfezeiger^.next<>nil) do begin if hilfezeiger^.Wert= inZahl then gefunden:= true else hilfezeiger:= hilfezeiger^.next; end; if gefunden then begin if hilfezeiger^.prev=nil then begin ioKopf:= hilfezeiger^.next; ioKopf^.prev:=nil; end else if hilfezeiger^.next=nil then hilfezeiger^.prev^.next:=nil else begin hilfezeiger^.next^.prev:=hilfezeiger^.prev; hilfezeiger^.prev^.next:=hilfezeiger^.next; end; end; end; end;
begin end.
procedure DVListenElementEntfernen(var ioKopf: tRefListe; inZahl: integer);
var hilfezeiger: tRefListe; gefunden: boolean; begin if ioKopf<>nil then begin hilfezeiger:= ioKopf; gefunden := false; while (not gefunden) and (hilfezeiger<>nil) do begin if hilfezeiger^.zahl= inZahl then gefunden:= true else hilfezeiger:= hilfezeiger^.next; end; if gefunden then begin if hilfezeiger^.prev=nil then begin ioKopf:= hilfezeiger^.next; ioKopf^.prev:=nil; end else if hilfezeiger^.next=nil then hilfezeiger^.prev^.next:=nil else begin hilfezeiger^.next^.prev:=hilfezeiger^.prev; hilfezeiger^.prev^.next:=hilfezeiger^.next; end; end; end; end;
program liste (input,output); type tRefListe = ^tListe; tListe = record zahl : integer; next,prev : tRefListe; end; var listenanfang : tRefListe; zeiger : tRefListe; endeListe : tRefListe; eingabe : integer; procedure alleDrucken(zuDrucken: tRefListe); var zeiger: tRefListe; begin zeiger := zuDrucken; while zeiger <> nil do begin writeln(zeiger^.zahl); zeiger:= zeiger^.next; end; writeln(); end; procedure DVListenElementEntfernen(var ioKopf: tRefListe; inZahl: integer); var hilfezeiger: tRefListe; gefunden: boolean; begin if ioKopf<>nil then begin hilfezeiger:= ioKopf; gefunden := false; while (not gefunden) and (hilfezeiger<>nil) do begin if hilfezeiger^.zahl= inZahl then gefunden:= true else hilfezeiger:= hilfezeiger^.next; end; if gefunden then begin if hilfezeiger^.prev=nil then begin ioKopf:= hilfezeiger^.next; ioKopf^.prev:=nil; end else if hilfezeiger^.next=nil then hilfezeiger^.prev^.next:=nil else begin hilfezeiger^.next^.prev:=hilfezeiger^.prev; hilfezeiger^.prev^.next:=hilfezeiger^.next; end; end; end; end; BEGIN listenanfang := nil; endeListe := nil; writeln('Eingabe der Zahlen, Beenden mit 0'); readln(eingabe); while eingabe <> 0 do begin new(zeiger); zeiger^.zahl := eingabe; zeiger^.next:=nil; if listenanfang = nil then begin listenanfang := zeiger; listenanfang^.prev := nil; endeliste:=zeiger; end else begin endeListe^.next:=zeiger; zeiger^.prev:= endeListe; endeListe := zeiger; end; readln(eingabe); end; writeln(); alleDrucken(listenanfang); DVListenElementEntfernen(listenanfang, 4); alleDrucken(listenanfang); END.