Linked list next node – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Linked list next node – .NET – Fórum – Programujte.comLinked list next node – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
28. 10. 2021   #1
-
0
-

Dobrý den vespolek, řeším linked list - nacházím se někde uvnitř (např. tři nody od začátku a pět nodů od konce) . Nemůžu přijít na to, jak se přesunu k další nodě (nebo předchozí). Metody Next a Previous fungují jen u první a poslední. Poradí někdo prosím?

Nahlásit jako SPAM
IP: 178.22.113.–
gna
~ Anonymní uživatel
1881 příspěvků
28. 10. 2021   #2
-
0
-

Budeš muset více rozepsat, co přesně děláš. U standardního LinkedListu normálně Next a Previous funguje na všech uzlech (ale první samozřejmě nemá předchozí a a poslední nemá další).

Nahlásit jako SPAM
IP: 213.211.51.–
KarlosCz1979
~ Anonymní uživatel
36 příspěvků
28. 10. 2021   #3
-
0
-

#2 gna
jednoduse jsem na  linklist nazvaný  seznam. Chci se po nem posouvat. Začínám od posledního. Jak se posunu o tři nody dopředu? 

Nahlásit jako SPAM
IP: 178.22.113.–
KarlosCz1979
~ Anonymní uživatel
36 příspěvků
28. 10. 2021   #4
-
0
-

   

Datum = seznam.last.value.nDatum
//a teď by mělo být něco jako 
Datum2 = seznam.last.previous.value.nDatum
Datum3 = seznam.last.previous.previous.value.nDatum

//A když se nacházím kdekoliv na tom link listu neexistuje něco jako 
DatumX = seznam.aktualniNoda.value.nDatum
DatumY = seznam.aktualniNoda.next.value.nDatum
Nahlásit jako SPAM
IP: 178.22.113.–
gna
~ Anonymní uživatel
1881 příspěvků
28. 10. 2021   #5
-
0
-

`aktualniNoda` není v tom listu, ale když ho nějak procházíš, tak ten aktuální node někde máš.

Jinak nevím, co ti na tom nefunguje. Pokud tam teda máš aspoň tři prvky a mimo toho, že C# je case-sensitive.

Nahlásit jako SPAM
IP: 213.211.51.–
28. 10. 2021   #6
-
0
-

Omlouvám se a celé toto vlákno beru zpět. Ukazuje se, že jsem naprosto nepochopil princip vytváření a pak přecházení z uzlu do uzlu. Učím se c# jako úplný samouk bez lektora a někdy holt hlava vymýšlí nesmysly. S tím, jak pořád plavu v oop je to někdy kombinace k vzteku. Konstrukce o kterou mi šlo:

LinkedList<Zaznam> zaznamy = new LinkedList<Zaznam>();
LinkedListNode<Zaznam> aktualniZaznamUzel = zaznamy.First;

Zaznam zaznam = VytvorNovyZaznam();

static Zaznam VytvorNovyZaznam()
{
  // získání data a textu
  return new Zaznam(datum, text)
}

potom už se můžu posouvat mezi nodami 

aktualniZaznamUzel = aktualniZaznamUzel.Next;

Ještě jednou díky za snahu mi pomoct. Mám chuť to vzdát....

Nahlásit jako SPAM
IP: 178.22.113.–
Kit+15
Guru
28. 10. 2021   #7
-
0
-

#6 KARLOSCZ1979
Přemýšlím, k čemu je dobrá funkce VytvorNovyZaznam. 

Zaznam zaznam = new Zaznam(datum, text);
zaznamy.AddLast(zaznam);
Nahlásit jako SPAM
IP: 213.175.43.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KarlosCz1979
~ Anonymní uživatel
36 příspěvků
29. 10. 2021   #8
-
0
-

Vytváří nové nody - každá noda je jeden záznam. Je i to špatně?

Nahlásit jako SPAM
IP: 178.22.113.–
gna
~ Anonymní uživatel
1881 příspěvků
29. 10. 2021   #9
-
0
-

Když v té funkci je jen jeden triviální příkaz, tak je jaksi zbytečná.

Nahlásit jako SPAM
IP: 213.211.51.–
Kit+15
Guru
29. 10. 2021   #10
-
0
-

#8 KarlosCz1979
Hlavně z ní není patrné, kde bere parametry datum a text. Jsou případy, kdy taková funkce (neříkám tomu metoda, protože je statická) se hodí například pro implementaci vzoru Factory.

Nahlásit jako SPAM
IP: 213.175.43.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Řešení
29. 10. 2021   #11
-
0
-
Vyřešeno Nejlepší odpověď

Ok tak já to vezmu podrobně. Úkolem je naprogramovat deník pomocí spojového seznamu. Deník má uzel záznam (třída Záznam, který se skládá z prop. Datum a prop. Text. Záznam má konstruktor předávající datum a text do těch properties a prázdný konstruktor pro vytvoření prvního záznamu. Nic víc ve třídě není. Všechno ostatní je pak ve statických metodách v Programu, mimo Main.

Deník umí založit záznam, uložit záznam, smazat záznam a posouvat se od aktuálního k následujícímu nebo předchozímu.

Metoda static Zaznam VytvorNovyZaznam() si od uživatele vezme datum záznamu a text, zpracuje to (TryParse atd) a hotové datum a text ve správných formátech předá do konstruktoru, který vytvoří nový záznam. Ten se pak uloží na konec LinkedListu. Snad jsem to napsal srozumitelně.
 

Nahlásit jako SPAM
IP: 178.22.113.–
Kit+15
Guru
29. 10. 2021   #12
-
+1
-
Zajímavé

#11 KARLOSCZ1979
Teď to dává smysl. VytvorNovyZaznam() je Builder, proto si samostatnou metodu zaslouží.

Nahlásit jako SPAM
IP: 213.175.51.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
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, 24 hostů

 

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