Obousmerny seznam procedura – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Obousmerny seznam procedura – Pascal – Fórum – Programujte.comObousmerny seznam procedura – Pascal – Fórum – Programujte.com

 

sparky290
Návštěvník
8. 1. 2014   #1
-
0
-

   

type UkPrvek = ^Prvek;
     Prvek = record
           info : integer;
           predchudce, naslednik : UkPrvek;
           end;

     ObousmerSeznam = record
         zacatek: UkPrvek;
         konec: UkPrvek
     end;

procedure init(var s: ObousmerSeznam);
begin
    s.zacatek:=nil;
    s.konec:=nil;
end;

procedure vlozNaZacatek(var s: ObousmerSeznam; hodnota: integer);
var novy : UkPrvek; 
begin
new(novy);
novy^.info:=hodnota;
novy^.predchudce:= nil;
novy^.naslednik:=s.zacatek;
s.zacatek:=novy;
if s.konec = nil then s.konec:=novy
end;

procedure vlozNaKonec(var s: ObousmerSeznam; hodnota: integer);
var novy: UkPrvek;
begin
new(novy);
novy^.info:=hodnota;
novy^.naslednik:=nil;
novy^.predchudce:=s.konec;
s.konec:=novy;
if s.konec = nil then s.konec:=novy
end;

procedure vypis(s:ObousmerSeznam);
var aktivni: UkPrvek;
begin
aktivni:=s.zacatek;
while (aktivni <> nil) do begin
write(aktivni^.info,' ');
aktivni:=aktivni^.naslednik;
end;
end;

Nevite proc procedure vlozNaKonec nefunguje ? 

A u metody vloz na zacatek tak u pridani 2. prvku na zacatek kdyz probehne tento prikaz novy^.naslednik:=s.zacatek;
tak druhy prvek predchudce furt ukazuje na NIL ? 

Nahlásit jako SPAM
IP: 195.178.73.–
sparky290
Návštěvník
8. 1. 2014   #2
-
0
-

   

procedure vlozNaZacatek(var s: ObousmerSeznam; hodnota: integer);
var novy : UkPrvek;
begin
if s.zacatek = nil then begin
new(novy);
novy^.info:=hodnota;
novy^.predchudce:= nil;
novy^.naslednik:=s.zacatek;
s.zacatek:=novy;
if s.konec = nil then s.konec:=novy
end
else new(novy);
novy^.info:=hodnota;
novy^.predchudce:=nil;
novy^.naslednik:=s.zacatek^.predchudce;
s.zacatek^.predchudce:=novy^.naslednik;
s.zacatek:=novy;
end;

Danou proceduru jsem zmenil ale stale to nefunguje

Nahlásit jako SPAM
IP: 195.178.73.–
KIIV
~ Moderátor
+43
God of flame
8. 1. 2014   #3
-
0
-

nemel by tu byt spis zacatek?

if s.konec = nil then s.konec:=novy

konec si presne na radku pred tim nastavil...

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
z
~ Anonymní uživatel
268 příspěvků
8. 1. 2014   #4
-
0
-

Nekomplikuj to a piš jednoduše, kdo to pak má číst? Vytvoříš nový prvek, prolinkuješ se starým a aktualizuješ hlavičku.

procedure vlozNaZacatek(var s: ObousmerSeznam; hodnota: integer);
var
    stary, novy: UkPrvek;
begin
    stary := s.zacatek;

    new(novy);
    novy^.info := hodnota;
    novy^.predchudce := nil;
    novy^.naslednik := stary;

    if stary <> nil then stary^.predchudce := novy;

    s.zacatek := novy;
    if s.konec = nil then s.konec := novy;
end;

procedure vlozNaKonec(var s: ObousmerSeznam; hodnota: integer);
var
    stary, novy: UkPrvek;
begin
    stary := s.konec;

    new(novy);
    novy^.info := hodnota;
    novy^.predchudce := stary;
    novy^.naslednik := nil;

    if stary <> nil then stary^.naslednik := novy;

    s.konec := novy;
    if s.zacatek = nil then s.zacatek := novy;
end;
Nahlásit jako SPAM
IP: 88.101.8.–
sparky290
Návštěvník
8. 1. 2014   #5
-
0
-

wau dik jde videt ze se to da udelat snadneji :)

Nahlásit jako SPAM
IP: 195.178.73.–
sparky290
Návštěvník
8. 1. 2014   #6
-
0
-

   

procedure smazHodnoty(var s: ObousmerSeznam; hodnota: integer);
var aktivni,tmp: UkPrvek;
begin
aktivni:=s.zacatek;
while (aktivni <> nil) do begin
  if aktivni^.info = hodnota then begin
    tmp:=aktivni;
    aktivni^.naslednik^.predchudce:=aktivni^.predchudce;
    aktivni^.predchudce^.naslednik:=aktivni^.naslednik;
    dispose(tmp);
  end;
aktivni:=aktivni^.naslednik;
end;
end;

Procedura na smazani prvku obsahujici danou hodnotu, ale hazi error 216

Nahlásit jako SPAM
IP: 195.178.73.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Obousměrný seznam v C — založil Milan98

Duplicity obousmerny seznam — založil sparky29

Procedura — založil karl

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý