NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: spojovy zoznam- vysvetlenie

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Matej Roden
Člen
Avatar
Matej Roden:21.4.2017 23:21

zdravim, snazim sa pochopit spojovemu zoznamu, ale ani za nic mi to nejde. nemohol by mi niekto vysvetlit pozadie toho co sa tam deje prosim vas? prvy krok, pri vytvoreni objektu IntZasobnik sa vrchol nastavi na null. po pouziti metody push sa vytvori vrchol, objekt triedy Prvek s parametrami klic a vrchol, ktory posluzi ako odkaz na predosly prvek. tym padom nebude najprv odkazovat na nic(kedze prvy objekt je null) a po dalsom pouziti metody push bude odkazovat na predosly objekt. lenze absolutne sa neviem dopracovat k tomu, ako objekt *dalsi *funguje. ako je mozne, ze ukazuje na objekt pred sebou?

class IntZasobnik {

   private Prvek vrchol;

   private class Prvek {
     int klic;
     Prvek dalsi;

     Prvek (int klic, Prvek dalsi) {
       this.klic = klic;
       this.dalsi = dalsi;
     }
   }

   IntZasobnik() {
     vrchol = null;
   }

   boolean jePrazdny() {
     return (vrchol == null);
   }

   void push(int klic) {
     vrchol = new Prvek(klic, vrchol);
   }

   int pop() {
     int v = vrchol.klic;
     vrchol = vrchol.dalsi;
     return v;
   }
 }
 
Odpovědět
21.4.2017 23:21
Avatar
Odpovídá na Matej Roden
Neaktivní uživatel:21.4.2017 23:55

Je to jako když stavíš sněhuláka. Na začátku nemáš nic. Pak postavíš kouli a dáš ji na zem. Každou další kouli postavíš na kouli nejvíc nahoře s tím, že si to ta koule bude pamatovat. Ty si zase budeš pamatovat jenom tu kouli nahoře. A když koule odendáváš, tak se zeptáš koule, jestli je pod ní nějaká další (nebo se pod ní podíváš, záleží na tom, jestli chceš mluvit se sněhovou koulí) a případně si ji zapamatuješ jako tu nejvrchnější.

Nahoru Odpovědět
21.4.2017 23:55
Neaktivní uživatelský účet
Avatar
Odpovídá na Matej Roden
Neaktivní uživatel:21.4.2017 23:59

A pokud se ti nelíbí vysvětlení se sněhulákem nebo není srozumitelný, tak musíš přijmout fakt, že je to jednosměrně zřetězený seznam, kde si každý prvek pamatuje ten předchozí. V tvém případě ho dostane v metodě push jako druhý parametr konstruktoru.

Nahoru Odpovědět
21.4.2017 23:59
Neaktivní uživatelský účet
Avatar
Matej Roden
Člen
Avatar
Odpovídá na Neaktivní uživatel
Matej Roden:22.4.2017 0:04

diky za rychlu odpoved :) jo to vysvetlenie chapem, ale mal som sa lepsie vyjadrit uz v prvom prispevku, nechapem technickej stranke veci. preco si pamata, resp preco sa donho uklada prave ten predosly objekt? urcite to bude mat nieco s klucovym slovom this a aj ked som sa v inom kode s tymto slovom stretol, tak teraz si to neviem dat dokopy.

 
Nahoru Odpovědět
22.4.2017 0:04
Avatar
Odpovídá na Matej Roden
Neaktivní uživatel:22.4.2017 0:22

Protože je to spojový seznam. Ve spojovém seznamu si předcházející/nás­ledující/oba prvky pamatují ty prvky samotné. Jeden prvek si pamatuje vždycky ten další a ten si pamatuje ten další a tak dál. Kdyby v sobě nebyly uložené, tak bys je ztratil, protože by na ně neexistuje žádná jiná reference (ty máš referenci pouze na jeden prvek, ten poslední). Nevím, jak ti víc poradit.

Nahoru Odpovědět
22.4.2017 0:22
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.