Zdravim,
mam opat velky problem so spajanym dynamickym zoznamom.
Mam takyto kod:
typedef struct prvek {
int hodnota;
struct prvek *p_dalsi;
} PRVEK;
PRVEK *alokuj_a_testuj(void)
{
PRVEK *p_pom;
p_pom = (PRVEK *) malloc(sizeof(PRVEK));
if (p_pom == NULL) {
printf("Malo pameti\n");
exit(1);
}
return p_pom;
}
int main(void)
{
int i, n, k;
PRVEK *p_prv, *p_akt, *p_pred;
n = 10;
/* vytvoreni prvniho prvku */
p_prv = alokuj_a_testuj();
p_prv->hodnota = 1;
p_prv->p_dalsi = NULL;
p_akt = p_prv;
/* vytvoreni vsech dalsich prvku */
for (i = 2; i <= n; i++) {
p_akt->p_dalsi = alokuj_a_testuj();
p_akt = p_akt->p_dalsi;
p_akt->hodnota = i;
p_akt->p_dalsi = NULL;
}
for (p_akt = p_prv; p_akt != NULL; p_akt = p_akt->p_dalsi) {
printf("%2d [%p]\n", p_akt->hodnota, p_akt);
}
/* zaverecne uvolneni pameti */
for (p_akt = p_prv; p_akt != NULL; ) {
p_prv = p_akt;
p_akt = p_akt->p_dalsi;
free((void *) p_prv);
}
return 0;
}
Vsetko mi jasne, len teraz mi ide o to, ze by som chcel pridat novy zaznam. Nakoniec zoznamu by som to vedel pridat, ale ja to chcem pridat napr. na poziciu 3 a ostane by sa posunulo doprava. Vobec mi to nechce spravne ist, uz som s tym stravil cely vecer.
Teda chcem aby napr mi potom vzniklo:
1,2,3, NoveCislo, 4, 5, 6, 7, 8, 9, 10
Chapete o co mi ide?
Treba tam aj niekde mallocnut jedno miesto.
Prosim, ak viete, poradte mi.
Dakujem velmi pekne.
Fórum › C / C++
Pridanie noveho zaznamu do spajaneho zoznamu
Když chceš přidat záznam někam jinam než na konec, tak je jenom o něco málo složitější.
Budeme přidávat ZA. Máš ten prvek, za který chceš nový přidat. Ten přes dalsi ukazuje na další prvek v seznamu. A postup je následující:
- založíš nový prvek
- do jeho dalsi uložíš ukazatel na ten další z původního ZA prvku
- do ukazatele dalsi v ZA daš svůj nový prvek
A to je celé. Prostě se ti nesmí "ztratit" ukazatel.
Když chceš přidat záznam někam jinam než na konec, tak je jenom o něco málo složitější.
Budeme přidávat ZA. Máš ten prvek, za který chceš nový přidat. Ten přes dalsi ukazuje na další prvek v seznamu. A postup je následující:
- založíš nový prvek
- do jeho dalsi uložíš ukazatel na ten další z původního ZA prvku
- do ukazatele dalsi v ZA daš svůj nový prvek
A to je celé. Prostě se ti nesmí "ztratit" ukazatel.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pridanie nového fontu v C# — založil D3vis
Pridanie nového riadku vo formulári — založil Tocimanko
[E-mal] Při zadání nového záznamu do databáze odeslat mail — založil prema
Výpis zoznamu — založil allicce
Transformacia zoznamu v txt — založil kibukaj
Moderátoři diskuze