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

Odstraneni prvku seznam – Pascal – Fórum – Programujte.comOdstraneni prvku seznam – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
sparky290
Návštěvník
9. 1. 2014   #1
-
0
-

Jak byste prosim odstranili prvek v jednosmernem neserazenem! linearnim seznamu  splnujici dane kriterium 

 ??

procedure odstranLyzareBody(var f: Fronta; kriterium: byte);
var predchudce, aktualni, tmp: UkPrvek;       
begin
predchudce:=nil;
aktualni:=f.zacatek;
while (aktualni <> nil) do begin
if (aktualni^.bodykarta < kriterium) then begin
                                          tmp:=aktualni;
                                          aktualni:=aktualni^.dalsi;                                
                                          
end;

end; 

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

Spis mam problem zrusit jen toho posledniho s malo body

procedure odstranLyzareBody(var f: Fronta; kriterium: byte);
var predchudce, aktualni, prvni,predposledni, posledni, tmp: UkPrvek;
begin
aktualni:=f.zacatek^.dalsi;
predchudce:=f.zacatek;
while (aktualni^.dalsi <> nil) do begin	{tohle rusi lyzare s malo body uprostred}
if (aktualni^.bodykarta < kriterium) then begin
                                          tmp:=aktualni;
                                          predchudce^.dalsi:=aktualni^.dalsi;
                                          dispose(tmp);
                                          end;
predchudce:=aktualni;
aktualni:=aktualni^.dalsi;
end;

prvni:=f.zacatek;
posledni:=f.konec;
{tohle rusi lyzare s malo body na zacatku}
if (prvni^.bodykarta < kriterium) then begin
                                       tmp:=prvni;
                                       f.zacatek:=prvni^.dalsi;
                                       dispose(tmp);
                                       end;
                                       { melo by to zrusit posledniho ale nevim jak} 
if (posledni^.bodykarta < kriterium) then begin
                                          tmp:=posledni;
                                          
                                       
                                          
                                          
                                          f.konec:=????;                                       
                                          dispose(tmp);
                                          end;}
end;
Nahlásit jako SPAM
IP: 195.178.73.–
z
~ Anonymní uživatel
268 příspěvků
10. 1. 2014   #3
-
0
-

Zase to zbytečně komplikuješ. Takhle nějak by to mohlo fungovat:

procedure odstranLyzareBody(var f: Fronta; kriterium: byte);
var
  predchozi, aktualni, dalsi: UkPrvek;
begin
  predchozi := nil;
  aktualni := f.zacatek;

  while aktualni <> nil do
  begin
    if aktualni^.bodykarta < kriterium then
    begin
      dalsi := aktualni^.dalsi;

      if predchozi <> nil then predchozi^.dalsi := dalsi;
      if f.zacatek = aktualni then f.zacatek := dalsi;
      if f.konec = aktualni then f.konec := predchozi;

      dispose(aktualni);

      aktualni := dalsi;
    end
    else
    begin
      predchozi := aktualni;
      aktualni := aktualni^.dalsi;
    end;
  end;
end;
Nahlásit jako SPAM
IP: 88.101.8.–
sparky290
Návštěvník
10. 1. 2014   #4
-
0
-

Diky moc musim se v tom jeste zdokonalit 

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, 40 hostů

Moderátoři diskuze

 

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