2024. január 14., vasárnap

Csatolt lista létrehozása, rendezése és törlése Swift kódban


import Foundation

class CsomoPont {
    var adat: Int
    var kovetkezo: CsomoPont?

    init(_ adat: Int) {
        self.adat = adat
        self.kovetkezo = nil
    }
}

class CsatoltLista {
    var fej: CsomoPont?

    func kiirCsatoltListat() {
        var jelenlegi = fej
        while jelenlegi != nil {
            print("\(jelenlegi!.adat) ", terminator: "")
            jelenlegi = jelenlegi!.kovetkezo
        }
        print()
    }

    func hozzaadCsomopont(_ adat: Int) {
        let ujCsomoPont = CsomoPont(adat)
        if fej == nil {
            fej = ujCsomoPont
        } else {
            var jelenlegi = fej
            while jelenlegi!.kovetkezo != nil {
                jelenlegi = jelenlegi!.kovetkezo
            }
            jelenlegi!.kovetkezo = ujCsomoPont
        }
    }

    func rendezCsatoltListat() {
        if fej == nil || fej!.kovetkezo == nil {
            return
        }

        var rendezett = false
        while !rendezett {
            rendezett = true
            var elozo: CsomoPont? = nil
            var jelenlegi = fej

            while jelenlegi!.kovetkezo != nil {
                if jelenlegi!.adat > jelenlegi!.kovetkezo!.adat {
                    rendezett = false
                    if elozo != nil {
                        elozo!.kovetkezo = jelenlegi!.kovetkezo
                        jelenlegi!.kovetkezo = jelenlegi!.kovetkezo!.kovetkezo
                        elozo!.kovetkezo!.kovetkezo = jelenlegi
                    } else {
                        fej = jelenlegi!.kovetkezo
                        jelenlegi!.kovetkezo = jelenlegi!.kovetkezo!.kovetkezo
                        fej!.kovetkezo = jelenlegi
                    }
                }

                elozo = jelenlegi
                jelenlegi = jelenlegi!.kovetkezo
            }
        }
    }

    func torolCsomopontot(_ celAdat: Int) {
        while fej != nil && fej!.adat == celAdat {
            fej = fej!.kovetkezo
        }

        var jelenlegi = fej
        var elozo: CsomoPont? = nil

        while jelenlegi != nil {
            if jelenlegi!.adat == celAdat {
                elozo!.kovetkezo = jelenlegi!.kovetkezo
            } else {
                elozo = jelenlegi
            }

            jelenlegi = jelenlegi!.kovetkezo
        }
    }
}

// Példa csatolt lista létrehozása
let csatoltLista = CsatoltLista()
csatoltLista.hozzaadCsomopont(4)
csatoltLista.hozzaadCsomopont(2)
csatoltLista.hozzaadCsomopont(1)
csatoltLista.hozzaadCsomopont(3)

// Csatolt lista kiírása
print("Eredeti lista:")
csatoltLista.kiirCsatoltListat()

// Csatolt lista rendezése
csatoltLista.rendezCsatoltListat()
print("Rendezett lista:")
csatoltLista.kiirCsatoltListat()

// Csomópont törlése
let torlendoAdat = 2
csatoltLista.torolCsomopontot(torlendoAdat)
print("A(z) \(torlendoAdat) értékű csomópontot töröltük:")
csatoltLista.kiirCsatoltListat()


A CsomoPont osztály reprezentál egy csomópontot, a CsatoltLista osztály pedig a csatolt listát. A metódusok segítségével megvalósítjuk a csatolt lista létrehozását, kiírását, rendezését és törlését. Az eredményeket a print függvény segítségével írjuk ki a konzolra.

Nincsenek megjegyzések:

Megjegyzés küldése