Kruhový seznam – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kruhový seznam – Java – Fórum – Programujte.comKruhový seznam – Java – Fórum – Programujte.com

 

Redby0
Návštěvník
10. 6. 2010   #1
-
0
-

Ahoj, řeším takovej problémek. Vytvářím kruhový seznam a implementuji to v Javě. Teoreticky je mi jasný jak to funguje, ale nějak se mi nedaří vyřešit to jakým způsobem zjistím že je objekt poslední a v tom případě bude ukazatel aktualni.dalsi na první objekt. Pokud by nebyl kruhový tak to je v pohodě, protože posledni by bylo aktualni.dalsi == null. Ale jak to udělat u kruhového. Snad je to dostatečně pochopitelné o co mi jde. Díky moc za pomoc.

Nahlásit jako SPAM
IP: 212.96.168.–
liborb
~ Redaktor
+18
Guru
10. 6. 2010   #2
-
0
-

Možností je víc. Do té struktury si přidáš flag, kterým si konec označíš ... v extra proměnné si budeš uchovávat pozici posledního ... nebo u toho svého objektu nějakých způsobem rozlišíš, že je "prázdný" a tento prázdný objekt budeš používat jako zarážku (tj. vždy tam bude jeden) ....

Nahlásit jako SPAM
IP: 85.207.166.–
Prog.0
Věrný člen
10. 6. 2010   #3
-
0
-

To Redby :
Skús pozrieť:
http://en.wikipedia.org/wiki/Circular_buffer
http://en.wikipedia.org/wiki/Queue_%28data_structure%29

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Redby0
Návštěvník
11. 6. 2010   #4
-
0
-

Tak jsem to zatím vyřešil tak že jsem si udělalt proměnou Zacatek, Nynejsi a Konec. Pokud vkladám v seznamu za prvek tak je to v poho. Problem mam u obousměrneho seznamu. Tam mi to občas děla nějaky brigule. Přemejšlým jestli náhodou ještě nemusím mít proměnou předchozi. Jinak samozřejmě v objedktu mam dalsi a predchozi, ale prochazim pomoci iteratoru, kde mam ty 3 vyše zmíněné proměné

Nahlásit jako SPAM
IP: 212.96.168.–
Prog.0
Věrný člen
11. 6. 2010   #5
-
0
-

Neviem, či celkom rozumiem, čo presne sa pokúšaš dosiahnuť a aké operácie má ta štruktúra vedieť.

Ja by som to riešil tak že by som si vytvoril pole konštantnej veľkosti pre ukladanie daných objektov.

private Object[] data = new Object[N];
a potom dve premenné:
private int read = 0; // index z ktorého sa najbližšie bude čítať

private int write = 0; // index na ktorý sa najbližšie bude písať
no a metódy get a put: na citanie a zapisovanie do zoznamu:
public Object get() {

if (isEmpty()) throw EmptyException();
try {
return data[read];
} finaly {
read++;
if (read==data.length) read = 0;
}
}

public void put(Object o) throws FullException {
if (isFull()) throw FullException();
data[write] = o;
write++;
if (write==data.length) write = 0;
}

public boolean isEmpty() {
return return read == write;
}

public boolean isFull() {
// todo...
}

Nahlásit jako SPAM
IP: 213.160.186.–
Prog.
Redby0
Návštěvník
11. 6. 2010   #6
-
0
-

Jo to je sice řešení, ale já to potřebuji udělat pomocí spojového seznamu. No něco mě napadlo tak to večer vyzkouším. Podle mě mam chybičku v ukazatelých.. Ale díky za typ

Nahlásit jako SPAM
IP: 212.96.168.–
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ů

Podobná vlákna

Kruhovy zoznam — založil tom

OS seznam — založil Bengo

C++ Seznam — založil _Daffy_

Moderátoři diskuze

 

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