Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Ahoj, snazim se napsat proceduru, ktera mi vlozi ve spojovem seznamu prvek za nejaky dalsi prvek, problem je ten, ze nevim jak udelat aby mi ten, za ktery vkladam dalsi prvek, ukazoval na ten dalsi prvek, dekuju za rady :)
Offline
no asi tak, kdyz mam proceduru, ktera mi projizdi ten seznam prvek po prvku, podle nejaky hodnoty najde prvek, za kterej vklada novej, tak jak priradi tomu puvodnimu adresu toho novyho, kdyz je to dynamicka promenna?
Offline
Pokud chceme vložit node někam doprostřed (mezi dva uzly), na určenou pozici, musíme udělat následující kroky:
1.
for (i = 1; i < pos-1; i++)
{
temp = temp->next;
}
temp1 = temp->next;Nyní máme temp1 a temp2 (tedy důležité adresy) a mezi tyto bloky budeme chtít vložit nový.
2.
temp->next = new_node;
3.
new_node->next = temp1;
Offline
je mi jasny jak by to melo bejt, ale neni mi jasny jak to je ve skutecnosti u tech ukazatelu :D
procedure PridejZaPrvek(var s : seznam; ZaKtery : integer; Co : integer);
var
p, l : PPrvek;
begin
new(l);
l^.Cislo:=s.Hlava^.Cislo;
l^.Dalsi:=s.Hlava^.Dalsi;
while not (zaktery=l^.cislo) do
begin
if l^.Cislo=zaktery then
begin
new(p);
p^.Cislo:=co;
p^.Dalsi:=l^.Dalsi;
l^.Dalsi:=p;
end;
l^.Cislo:=l^.Dalsi^.Cislo;
l^.Dalsi:=l^.Dalsi^.Dalsi;
end;
end;
to je muj podprogram, zatim v nem neuvazuju, ze by hledanej prvek byl v hlave, nebo v zarazce
Offline
while not (zaktery=l^.cislo)
...
if l^.Cislo=zaktery thenta podmínka očividně nebude nikdy splněná. navíc je blbost pořád kopírovat prvky toho seznamu. mělo by stačit něco jako
l=s^.hlava; {mas nejakej duvod, proc ten seznam neni rovnou ukazatel na tu hlavu?}
while not (zaktery=l^.cislo)
l=l^.dalsi;
new(p);
p^.Cislo:=co;
p^.Dalsi:=l^.Dalsi;
l^.Dalsi:=p;v pascalu jsem už pár let neprogramoval, tak tam může bejt nějaká chybička, ale snad ani ne
Offline