Príklad kódu:
Kód:
#include <stdio.h>
#include <stdlib.h>
// definovanie prvku pola
typedef struct prvok {
int hodnota;
struct prvok *dalsi;
} TPrvok;
// prida novy prvok v poradi do pola (aj prvy), (aj na koniec pola)
void *pridaj_prvok(TPrvok **z, TPrvok **k, int cislo)
{
TPrvok *p;
if (*z == NULL) {
*z = (TPrvok*)malloc(sizeof(TPrvok));
(*z)->hodnota = cislo;
(*z)->dalsi = NULL;
*k = *z;
}
else {
p = (TPrvok*)malloc(sizeof(TPrvok));
p->hodnota = cislo;
p->dalsi = NULL;
(*k)->dalsi = p;
*k = p;
}
}
// prida prvok na zaciatok pola
void pridaj_na_zaciatok(TPrvok **z, int cislo)
{
TPrvok *novy = (TPrvok*)malloc(sizeof(TPrvok));
novy->hodnota = cislo;
novy->dalsi = *z;
*z = novy;
}
// vypise pole prvkov
void vypis(TPrvok *p)
{
while (p != NULL) {
printf ("\nprvok: %d ", p->hodnota);
p = p->dalsi;
}
}
int main(void)
{
int i;
TPrvok *z, *k, *p;
// vytvori dynamicky alokovany zretazený zoznam s 10 polozkami (pre ilustraciu)
z = k = NULL;
for (i = 1; i <= 10; i++) // môzes si to zmenit na 1000
pridaj_prvok(&z, &k, i);
vypis(z);
// prida prvok na koniec
printf("\n\nZadaj cislo, ktore vlozim na koniec zoznamu: ");
scanf("%d", &i);
pridaj_prvok(&z, &k, i);
vypis(z);
// pridaj prvok na zaciatok
printf("\n\nZadaj cislo, ktore vlozim na koniec zoznamu: ");
scanf("%d", &i);
pridaj_na_zaciatok(&z, i);
vypis(z);
return 0;
}
Veľmi dobre je to popísané na
tejto stránke.
Sú tam aj ďalšie funkcie na využitie takého zoznamu.
_________________
kódy píšem na platforme: linux Ubuntu 12.04 (Geany, Code::Blocks), WinXP (Code::Blocks, PsPad editor),
Skype: libcokamo, ICQ: 56312279
Ak treba, napíš mi na
libcosenior@gmail.com. To mám v mobile a stále po ruke.