Láncolt lista két elemének cseréje c#?
Megírtam az alábbi metódust (a láncolt lista osztályában van), és null referenciára fut ki a
p2 = p2.kovetkezo; sorban pedig előtte van egy if null referenciára.
public static void Csere(int index1,int index2)
{
ListaElem p = fej;
int hanyadik = 0;
while (p != null && hanyadik < index1)
{
p = p.kovetkezo;
hanyadik++;
}
if (p != null)
{
ListaElem p2 = fej;
int hanyadik2 = 0;
while (p != null && hanyadik2 < index2)
{
p2 = p2.kovetkezo;
hanyadik++;
}
if (p2 != null)
{
int seged1=0;
seged1 = p.tartalom;
p.tartalom = p2.tartalom;
p2.tartalom = seged1;
}
}
}
Miért nem használod c#-ban a beépített List generikus interfacet? Abban sokkal könnyebb lenne.
Még nem igazán látom át, mit miért raktál bele, de pár észrevétel: a csere függvényed amit átvesz értékeket, azokat nem ellenőrzöd. Mi van ha én meghívom mínusz 5 és mínusz 4 értékkel?
Következő észrevétel: sokkal rövidebb és átláthatóbb kód lenne, ha a while ciklust és környezetét egy for ciklusba raknád.
Harmadik észrevétel: az utolsó while fejlécébe nem p2!=null-t akartál írni?
Egyébként meg léptesd végig debuggal az egészet soronként, és megtudod, hol kap nullt és miért.
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!