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