Seznam - vysvětlení – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Seznam - vysvětlení – C / C++ – Fórum – Programujte.comSeznam - vysvětlení – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Pepa
~ Anonymní uživatel
79 příspěvků
18. 11. 2012   #1
-
0
-

Ahoj, učím se jak napsat seznam a zasekl jsem se ve funkci pro přidání prvku do seznamu. 

typedef struct seznam {
  int data;
  struct seznam *dalsi;
} SEZNAM;


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) {
    /* Tady bychom nějak oąetřili chybu alokace. */
    return;
  }
  ps->data = prvek;
  ps->dalsi = *pps;
  *pps = ps;
}

Mohli byste mi prosím vysvětlit jak funkce pridej funguje? Tak nějak opravdu jak pro blbce :) Díky moc.

Nahlásit jako SPAM
IP: 90.181.142.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
18. 11. 2012   #2
-
0
-

Představ si vláčky. Přidání znamená, že na začátek vláčku daš novou lokomotivu a ty předchozí jenom připojíš. A pak si stačí pamatovat, že vláček začíná novou lokomotivou :).

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
vitamin+8
Grafoman
18. 11. 2012   #3
-
0
-

Nebolo by lepsie miesto dvojiteho pointra pouzit obycajny a vytvoreny prvok zoznamu vratit ako navratovu hondoutu?

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
ingiraxo+15
Grafoman
18. 11. 2012   #4
-
0
-

 Přesně jako vláček :) a není to seznam ale linkedList

typedef struct LINK
{
    int number;
    struct LINK* next;
} Link;

void showLink(const Link* link)
{
    while (link != NULL)
    {
        printf("%d, ", link->number);
        link = link->next;
    }
}

Link* lastLink(Link* link)
{
    Link* last = link;

    while (link != NULL)
    {
        last = link;
        link = link->next;
    }
    return last;
}

void add(Link** link, const int number)
{
    Link* newLink = (Link*)malloc(sizeof(Link));
    Link* last = lastLink(*link);

    newLink->number = number;
    newLink->next = NULL;

    if (!*link) *link = newLink;
    else last->next = newLink;
}

int main()
{
    Link* link = NULL;

    add(&link, 10);
    add(&link, 20);
    add(&link, 30);

    showLink(link);

    return EXIT_SUCCESS;
}

lepší by bylo, kdyby sis uchovával poslední prvek třeba globálně, takto musíš vždy projít vše

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
KIIV+42
God of flame
18. 11. 2012   #5
-
0
-

je to spojovy seznam (aka linked list)... a tak jak to sem hodil je to konkretne zasobnik

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 58 hostů

Podobná vlákna

Vysvětlení zadání — založil Adam

Vysvětlení kodu — založil Mutagen

Vysvětlení programu — založil Seth1113

Moderátoři diskuze

 

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