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
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:
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
Offline
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
↑ 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í
Offline
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)
#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
↑ 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:
struct node {
int value;
struct node *next;
};stačilo dopsat struct k node *next
Offline