Matematické Fórum

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

#1 27. 11. 2012 20:26

Hertas
Příspěvky: 217
Škola: FJFI CVUT(12-15, bc)
Pozice: student
Reputace:   17 
 

Pascal ukazatele

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

 

#2 27. 11. 2012 20:46

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Pascal ukazatele

Zdravím,
chceš vkládat nový prvek na začátek, nebo na konec spojového seznamu?


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#3 27. 11. 2012 20:51

Hertas
Příspěvky: 217
Škola: FJFI CVUT(12-15, bc)
Pozice: student
Reputace:   17 
 

Re: Pascal ukazatele

na zacatek i na konec to umim, ale chtel bych i nekam doprostred, nebo bych kvuli tomu musel udelat novej seznam?

Offline

 

#4 27. 11. 2012 20:55 — Editoval Stýv (27. 11. 2012 20:55)

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: Pascal ukazatele

↑ Hertas: něco jako

Code:

tenZaKterejVkladam^.dalsi:=tenCoVkladam

?

Offline

 

#5 27. 11. 2012 21:06 — Editoval Hertas (27. 11. 2012 21:07)

Hertas
Příspěvky: 217
Škola: FJFI CVUT(12-15, bc)
Pozice: student
Reputace:   17 
 

Re: Pascal ukazatele

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

 

#6 27. 11. 2012 21:42 — Editoval RePRO (27. 11. 2012 21:56)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Pascal ukazatele

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.

Code:

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.

Code:

temp->next = new_node;

3.

Code:

new_node->next = temp1;

Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#7 27. 11. 2012 22:15

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: Pascal ukazatele

↑ Hertas: pokud odpověď na tvojí otázku není to, co jsem předtím psal, tak vůbec nechápu, na co se ptáš

Offline

 

#8 27. 11. 2012 23:17 — Editoval Hertas (27. 11. 2012 23:18)

Hertas
Příspěvky: 217
Škola: FJFI CVUT(12-15, bc)
Pozice: student
Reputace:   17 
 

Re: Pascal ukazatele

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

 

#9 28. 11. 2012 00:25

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: Pascal ukazatele

Code:

while not (zaktery=l^.cislo)
      ...
    if l^.Cislo=zaktery then

ta 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

Code:

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

 

#10 28. 11. 2012 17:52

Hertas
Příspěvky: 217
Škola: FJFI CVUT(12-15, bc)
Pozice: student
Reputace:   17 
 

Re: Pascal ukazatele

to je ono, diky moc :)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson