2024. január 14., vasárnap

Csatolt lista létrehozása Javaban

Egy függvény Javaban, amely végigiterál a csatolt listán, és kiírja az összes csomópont értékét:

class CsomoPont {
    int adat;
    CsomoPont kovetkezo;

    public CsomoPont(int adat) {
        this.adat = adat;
        this.kovetkezo = null;
    }
}

public class CsatoltListaPelda {
    public static void kiirCsatoltListat(CsomoPont fej) {
        CsomoPont jelenlegi = fej;
        while (jelenlegi != null) {
            System.out.print(jelenlegi.adat + " ");
            jelenlegi = jelenlegi.kovetkezo;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        // Példa csatolt lista létrehozása
        CsomoPont fej = new CsomoPont(1);
        fej.kovetkezo = new CsomoPont(2);
        fej.kovetkezo.kovetkezo = new CsomoPont(3);
        fej.kovetkezo.kovetkezo.kovetkezo = new CsomoPont(4);

        // Csatolt lista kiírása
        kiirCsatoltListat(fej);
    }
}

CsomoPont osztályt definiálása, majd létrehoz egy csatolt listát, és kiírja annak elemeit a kiirCsatoltListat függvénnyel.

Így kell rendezni, megtalálni és törölni a csomópontokat:

import java.util.*;

public class CsatoltListaPelda {

    // ... (Előző rész)

    public static CsomoPont rendezCsatoltListat(CsomoPont fej) {
        // CsomoPont-ok átrendezése
        List<Integer> adatok = new ArrayList<>();
        CsomoPont jelenlegi = fej;

        while (jelenlegi != null) {
            adatok.add(jelenlegi.adat);
            jelenlegi = jelenlegi.kovetkezo;
        }

        Collections.sort(adatok);

        // Rendezett lista létrehozása
        CsomoPont rendezettFej = new CsomoPont(adatok.get(0));
        CsomoPont akt = rendezettFej;

        for (int i = 1; i < adatok.size(); i++) {
            akt.kovetkezo = new CsomoPont(adatok.get(i));
            akt = akt.kovetkezo;
        }

        return rendezettFej;
    }

    public static CsomoPont torolCsomopontot(CsomoPont fej, int celAdat) {
        CsomoPont jelenlegi = fej;
        CsomoPont elozo = null;

        while (jelenlegi != null && jelenlegi.adat != celAdat) {
            elozo = jelenlegi;
            jelenlegi = jelenlegi.kovetkezo;
        }

        if (jelenlegi == null) {
            System.out.println("A csomópont nem található.");
            return fej;
        }

        if (elozo != null) {
            elozo.kovetkezo = jelenlegi.kovetkezo;
        } else {
            fej = jelenlegi.kovetkezo;
        }

        return fej;
    }

    public static void main(String[] args) {
        // Példa csatolt lista létrehozása
        CsomoPont fej = new CsomoPont(4);
        fej.kovetkezo = new CsomoPont(2);
        fej.kovetkezo.kovetkezo = new CsomoPont(1);
        fej.kovetkezo.kovetkezo.kovetkezo = new CsomoPont(3);

        // Csatolt lista kiírása
        kiirCsatoltListat(fej);

        // Csatolt lista rendezése
        CsomoPont rendezettFej = rendezCsatoltListat(fej);
        System.out.println("Rendezett lista:");
        kiirCsatoltListat(rendezettFej);

        // Csomópont törlése
        int torlendoAdat = 2;
        fej = torolCsomopontot(fej, torlendoAdat);
        System.out.println("A(z) " + torlendoAdat + " értékű csomópontot töröltük:");
        kiirCsatoltListat(fej);
    }
}

Létrehoztunk egy rendezCsatoltListat függvényt, ami a csatolt lista elemeit rendezve visszaadja egy új csatolt lista fejét. Továbbá, a torolCsomopontot függvény segítségével megvalósítottam a csomópont törlését a megadott érték alapján.

Nincsenek megjegyzések:

Megjegyzés küldése