Zdravím, předem bych chtěl poděkovat všem za jakoukoliv snahu. Ve škole jsem dostal za úkol udělat program v C++ na řazení celých kladných čísel metodou Radix sort. V programu se musí využít seznam.
Tímto úkolem se již zabývám druhý den a zdá se mi, že se v tom čím dál víc zamotávám. Ze začátku jsem převzal kód z linuxsoft.cz a snažil se ho upravit. Našel jsem dokonce knihu na books.google.com, kde se tato problematika popisuje, ale pořad mi něco uniká a nechce to pracovat, ať to zkouším, jak to chci.
Nejvíce by mi pomohlo, kdyby mi někdo poradil, jak mam vytvořit seřazený seznam. Jinak řečeno, bych potřeboval, aby se mi vygenerovalo číslo, zavolala se funkce přidat, kde by se spustil nějaký cyklus, který by porovnával čísla, až by našel místo kam to číslo patří, seznam by se rozpojil a číslo bylo vnořené.
Přidávám kód, se kterým jsem to zkoušel udělat.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
int i;
int pole[10];
typedef struct seznam { // udela typ seznam, do ktereho se ulozi data a ukazatel na dalsi data
int data;
struct seznam *dalsi;
} SEZNAM;
SEZNAM *zarazka;
void vypis(const SEZNAM *ps) {
while (ps != NULL) { /* Dokud nejsme na konci, */
printf("%i\n", ps->data); /* vypią aktuální prvek */
ps = ps->dalsi; /* a posuň se na daląí. */
}
}
void pridej(SEZNAM **pps, int prvek) {
SEZNAM *ps;
ps = (SEZNAM *) malloc(sizeof(SEZNAM));
if (!ps) {
return;
}
ps->data = prvek;
ps->dalsi = *pps;
*pps = ps;
while (ps != NULL) { /* Dokud nejsme na konci, */
printf("%i\n ---", ps->data); /* vypią aktuální prvek */
ps = ps->dalsi; /* a posuň se na daląí. */
}
}
void mazejvse(SEZNAM **pps) {
SEZNAM *ps;
ps = *pps;
while (ps) {
*pps = ps->dalsi;
free(ps);
ps = *pps;
}
getch();
}
int main(void) {
SEZNAM *s;
srand(time(0));
int prvek;
s = NULL; /* Důleľité, v opačném případě by nebyl seznam ukončen. */
for (i = 0; i < 10; i++) {
pole[i] = (rand() % 100);
}
puts("Vygenerovane hodnoty v poli:");
puts("----------------------------");
for (i = 0; i < 10; i++) {
printf("%i\n", pole[i]);
pridej(&s, pole[i]);
}
puts("\n");
puts("Seznam:");
puts("----------------------------");
vypis(s);
mazejvse(&s);
return 0;
getch();
}