| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 19.10.10 Prihlásený: 28.10.12 Príspevky: 41 Témy: 9 |
Zdravim, mam kod:
Kód: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <time.h> using namespace std;
// Trieda Item bude predstavovat jeden prvok zoznamu. class Item { public: // Hodnota prvku int value; // Smernik na dalsi prvok Item* next;
// Konstruktor s 2 parametrami (ktore maju defaultne hodnoty) Item(int value = 0, Item* next = NULL) {
this->value = value; this->next = next; }
// Clenska funkcia = metoda triedy. Vypise hodnotu prvku na obrazovku. void print() { cout << value; } };
// Trieda List predstavuje zretazeny zoznam.
class List {
public:
// Smernik na prvy prvok. Ak je NULL, znamena to, ze mame prazdny zoznam.
Item* first;
List() { first = NULL; }
List(int size, int min, int max){ //konstruktor first = NULL; srand(time(NULL)); for(int i = 0; i < size; i++){ push_front(min + (rand() % (max-min+1))); } }
~List(){ // destruktor Item* current = first, *temp; while (current != NULL) { temp = current->next; delete current; current = temp; } this->first = NULL; }
int size(){ //zistuje pocet prvkov zoznamu int i = 0; Item* current = first; while(current != NULL){ i++; current = current->next; } return i; }
Item* merge(Item* first, Item* second){ //spaja dva utriedene zoznamy Item* third; Item* last; if(first->value >= second->value){ third=second; second=second->next; last=third; } else{ third=first; first=first->next; last=third; } while(second != NULL && first != NULL){ if(first->value > second->value){ last->next=second; second=second->next; last=last->next; } else{ last->next=first; first=first->next; last=last->next; } } while(first == NULL && second != NULL){ last->next=second; second=second->next; last=last->next; } while(second == NULL && first != NULL){ last->next=first; first=first->next; last=last->next; } return third; } Item* mergeSort(Item* prv, int velkost){ Item* second = prv; Item* diss = prv; int polka = velkost / 2;
if(velkost == 1 ) return prv;
for(int i=1; i <= polka; i++){ diss = second; second=second->next; } diss->next = NULL;
return (merge(mergeSort(prv, polka), mergeSort(second, polka))); } void sort(){
int velkost = size(); this->first = mergeSort(first, velkost); }
};
Hacik je v tom, ze mi to sorti len v pripade, ze zretazeny zoznam obsahuje pocet prvkov rovny mocnine 2 - 2, 4, 8... inak niektore prvky jednoduche "zabudne" a zaradi ich inde, vie mi niekto pomoct prosim?
|
|
Registrovaný: 16.08.09 Prihlásený: 07.03.14 Príspevky: 186 Témy: 16 Bydlisko: Levice | Napísal pizet: 25.03.2011 13:19 | |
|
Neštudoval som tvoj kód.
Ak to to pomôže, skús si pozrieť moju verziu:
http://codepad.org/CUEziIR0
_________________ "Najlepším spôsobom, ako sa na budúcnosť pripraviť, je vymyslieť si ju." - John Sculley |
|
Registrovaný: 19.10.10 Prihlásený: 28.10.12 Príspevky: 41 Témy: 9 | Napísal autor témy zaefrim: 25.03.2011 14:49 | |
|
Dakujem, ale toto mi nepomoze, potrebujem to na triedach v C++ a v tomto mam len jednu malu chybu pravdepodobne v deleni 2 v metode mergeSort, len ju neviem najst a opravit
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Dynamicke pole v Triede C++ v Assembler, C, C++, Pascal, Java | 1 | 2001 | 19.11.2008 14:51 Dark_Raven | | C- Vyčistenie jednej struktury v spajanom zozname v Assembler, C, C++, Pascal, Java | 7 | 353 | 08.12.2013 22:16 BX | | Menší zádrhel... v Assembler, C, C++, Pascal, Java | 1 | 301 | 26.10.2012 19:02 faraon | | Dokumentacia k phpbb template triede v Redakčné systémy | 4 | 648 | 28.06.2009 2:57 Blackshadow | | I/K: GPU v triede RTX 3070 v Kúpim | 0 | 457 | 08.01.2023 20:17 jojinkho | | ako z JSP zavolat metodu v triede v Assembler, C, C++, Pascal, Java | 6 | 484 | 16.04.2008 17:05 m@-nX | | Pozadie vo vnorenom zozname v HTML, XHTML, XML, CSS | 2 | 415 | 13.04.2011 17:50 M4rek | | Problém v zozname programov v Operačné systémy Microsoft | 5 | 371 | 03.11.2010 19:08 jkphoenix | | thickbox v ul zozname v JavaScript, VBScript, Ajax | 0 | 295 | 21.02.2010 13:22 senty | | Problem s menu v zozname v HTML, XHTML, XML, CSS | 8 | 466 | 17.02.2008 19:58 Creation | | Taktovanie Celerona Tualatin 1.0a @ 1,5 a jeden zádrhel [ Choď na stránku: 1, 2 ] v Biosy a ladenie výkonu | 47 | 2790 | 29.05.2007 11:29 Mir | | Zmena písmena disku (nie je v zozname) v Operačné systémy Microsoft | 3 | 297 | 17.02.2013 2:40 S1anley | | Ako pridať vlastnosti ovládacích prvkov, ktoré sú vytvorené v triede ASP.NET? v Technológia .NET | 1 | 522 | 20.05.2015 11:49 walther | | Excel 2010 - obsah zoznamu podmieneny volbou v prvom zozname v Ostatné programy | 1 | 567 | 14.03.2014 12:55 jtbs | | ASUS Eee PC X101 - pri inštalácii Windowsu nie sú na zozname žiadne pevné disky v Notebooky a netbooky | 2 | 404 | 07.12.2014 17:57 KeNNi | | Mám sa učiť C ++/objective C/ C#? v Assembler, C, C++, Pascal, Java | 5 | 722 | 08.07.2014 20:40 XOLOO |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|