Segítségre lenne szükségem c++ban?
Szóval az infótanárnőm beteg lett (kórházban van) és én továbbjutottam egy versenyben,
és szükség volna a gráfok ismeretére, nemtudom hogyan lehet őket deklarálni, használni? Tudna valaki 1 kicsit segíteni?
Azt hiszem valahogy ugy lehet oket deklaralni hogy:
struct graf
{
// nemtudom mi
}
hasonlóan deklaráltuk többféle típusu mátrixhalmazt.
pl gondolok arra hogy
struct array
{
int f; char d;
}T[100]// elemek száma
És akkor úgy irtunk bele pl. egy for után (i a lépésszám) T[i].f= egy szám T[i].d= egy betű;
Struct/class pont arra jó, hogy már létező elemekből építhetsz saját adatszerkezetet. Innentől kezdve rád van bízva, hogy hogyan teszed meg.
Pl. megtehetnéd azt, hogy int a-től z-ig deklarálsz változót, ami ha 0, akkor nincs az a csúcs, ha 1 akkor van. És utána ael, bel, stb vel egy tömbben tárolod, hogy melyik csúcsokhoz vezet belőle él. Pl. az (a,c) él egy egyesként megjelenik az ael[2] és cel[0]-ban. Ez így végülis korrekt (bár erősen limitált a csúcsok számában) és nyilván senki az életben nem fogja implementálni így.
Amúgy, hogy a kérdésre is válaszoljak, talán a legáltalánosabb a mátrixxal történő megadása egy gráfnak:
Tehát egy 2D tömb bőven elég, nem feltétlenül kell struct hozzá.
Persze még ezerféleképp meg lehetne adni egy gráfot. Egy fa esetén adja magát a fa adatstruktúra.
struct-al akkor érdemes dolgozni ha kevés az elemszám,
2Dmátrixal meg nem értem hogy miszerint 0, 1 az adott koordinataban levo elem.
A struct teljesen független az elemszámtól. Több változó, függvény és operator közti összefüggőséget lehet vele mutatni (és ehhez megfelelően lehet elérhetőséget állítani benne).
A csúcsok címezve vannak 1-től n-ig. Képzelj el egy táblázatot, amelyik jobb oldalán is a csúcsok vannak felsorolva és a tetején is. Egy rublikába, akkor írsz egyest ha van köztük él, különben 0-s. Eldobod a fejléceket és voilá.
Nyilván az egyszerű gráf esetén erősen redundáns, hisz a felső és alsó háromszögban ugyanazt látod, illetve a főátlóban csak 0 lehet. (Meg aztán csak 0 és 1-ből áll az egész), de minnél több mindent akarsz leírni annál kihasználtabb lesz a mátrix (jó ezt most nem sikerült jól megfogalmaznom):
ha írányítod az éleket, akkor már lehet más a felső és alsó háromszög. (vagy előjelezheted)
ha van hurok él, akkor a főátlóban is lehet él.
ha párhuzamos vagy súlyozott élek vannak, akkor egyes helyett más is szerepelhet.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!