Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 28. 03. 2012 09:00

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Setříděný seznam

Ahoj, mám problém s implementací seznamu v céčku, má to být dynamický seznam čísel, které se budou při vkládání správně zařazovat, strukturu prvku seznamu jsem udělal takto:

Code:

typedef struct {int cislo, *dalsi;} prvek;

ale nemyslím že to je dobře, ukazovat bych měl na následující prvek a ne číslo, jak to mám napsat abych ukazoval na strukturu prvek?

a ještě mě nenapadá jak realizovat "prázdný seznam"

Díky moc


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

  • (téma jako vyřešené označil(a) ReVolt)

#2 28. 03. 2012 10:05

jindra
Příspěvky: 78
Reputace:   
 

Re: Setříděný seznam

Prázdný seznam si realizuješ asi takhle:

prvek *prvni = null;

Procedura procházení pak půjde tak dlouho dokud nenarazí na prvek null, což se u prázdného seznamu stane hned na začátku.

A když se na to podíváš, tak budeš li dávat nové prvky na začátek seznamu, tak máš i konstantní rychlost přidání:

prvek *novy = new prvek;
novy.dalsi = prvni; (předáš adresu původního začátku)
prvni = novy;

Ale stejně tak si můžeš ukládat konec senzamu a přidávat na konec.


Co se týče definice structury, nejsem si v tom moc jistý, ale když první nadefinuješ strukturu a pak přidáváš vlastnosti, můžeš použít tu definovanou strukturu: http://stackoverflow.com/questions/3988 … -to-itself

Offline

 

#3 28. 03. 2012 12:23

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Setříděný seznam

↑ jindra: tak nějak jsem to dělal i já, ale hodilo mi to error, pak tu chybu dám i sem, ale teď nemám k dispozici vývojové prostředí


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

#4 30. 03. 2012 21:58 — Editoval jindra (30. 03. 2012 21:59)

jindra
Příspěvky: 78
Reputace:   
 

Re: Setříděný seznam

Tady je moje rychla implementace fronty pomoci seznamu. Ty  si tam musis dodelat jen to razeni (pri vkladani prostupovat tak dlouho dokud nenajdes spravne misto, rozpojit a pridat novy prvek)

Code:

#include <stdio.h>

using namespace std;

struct prvek
{
    int hodnota;
    prvek *dalsi;
};

    prvek *zacatek = NULL;
    prvek *konec = NULL;

void add(int i)
{
        prvek *p = new prvek;
        p->hodnota = i;

        if(konec != NULL)
        {
            konec->dalsi = p;
            konec = p;
        }
        else
        {
            p->dalsi = NULL;
            konec = p;
            zacatek = p;
        }
}


int get()
{
    int v = zacatek->hodnota;
    zacatek = zacatek->dalsi;

    if(zacatek == NULL)
    {
        konec = NULL;
    }

    return v;
}


int main()
{

    //naplneni
    for(int i = 1; i <= 10; i++)
    {
        add(i);
    }

    for(int i = 1; i <= 10; i++)
    {
        printf("%d\n", get());
    }
    return 0;
}

edit: rychla === rychle napsana :)

Offline

 

#5 31. 03. 2012 09:11 — Editoval ReVolt (01. 04. 2012 16:07)

ReVolt
Příspěvky: 99
Škola: UPOL
Pozice: Student
Reputace:   
Web
 

Re: Setříděný seznam

↑ jindra:
děkuju moc, tvůj kód si prostuduju abych ho pochopil, jen dotaz, když mám tu strukturu tak v ní mám pointer na tu samou strukturu a funguje to, ale když jsem použil typedef tak mi kompilátor háže chybu, nevíš čím to může být

EDIT: teď mi to hází chybu i když mám strukturu řešenou pouze přes struct:
c:\users\uživatel\documents\visual studio 2008\projects\alm_setrideny_seznam\alm_setrideny_seznam\main.c(14) : error C2061: syntax error : identifier 'prvek'
c:\users\uživatel\documents\visual studio 2008\projects\alm_setrideny_seznam\alm_setrideny_seznam\main.c(15) : error C2059: syntax error : '}'

co to má být? co je spatně

EDIT2: tak už jsem na to přišel:

Code:

struct node {
    int value;
    struct node *next;
};

stačilo dopsat struct k node *next


http://www.turistickyraj.cz - napsal jsem a spravuji

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson