Ruby-ban egy csatolt lista, valamint függvény, amelyet végigiterálnak a csatolt listán, kiírják az értékeket, rendezik a listát, megtalálják és törlik a csomópontokat:
class CsomoPont
attr_accessor :adat, :kovetkezo
def initialize(adat)
@adat = adat
@kovetkezo = nil
end
end
def kiir_csatolt_listat(fej)
jelenlegi = fej
while jelenlegi
print "#{jelenlegi.adat} "
jelenlegi = jelenlegi.kovetkezo
end
puts
end
def rendez_csatolt_listat(fej)
adatok = []
jelenlegi = fej
while jelenlegi
adatok.push(jelenlegi.adat)
jelenlegi = jelenlegi.kovetkezo
end
rendezett_adatok = adatok.sort
rendezett_fej = CsomoPont.new(rendezett_adatok[0])
akt = rendezett_fej
for i in 1..(rendezett_adatok.length - 1)
akt.kovetkezo = CsomoPont.new(rendezett_adatok[i])
akt = akt.kovetkezo
end
rendezett_fej
end
def torol_csomopontot(fej, cel_adat)
jelenlegi = fej
elozo = nil
while jelenlegi && jelenlegi.adat != cel_adat
elozo = jelenlegi
jelenlegi = jelenlegi.kovetkezo
end
if jelenlegi.nil?
puts "A csomópont nem található."
return fej
end
if elozo
elozo.kovetkezo = jelenlegi.kovetkezo
else
fej = jelenlegi.kovetkezo
end
fej
end
# Példa csatolt lista létrehozása
fej = CsomoPont.new(4)
fej.kovetkezo = CsomoPont.new(2)
fej.kovetkezo.kovetkezo = CsomoPont.new(1)
fej.kovetkezo.kovetkezo.kovetkezo = CsomoPont.new(3)
# Csatolt lista kiírása
puts "Eredeti lista:"
kiir_csatolt_listat(fej)
# Csatolt lista rendezése
rendezett_fej = rendez_csatolt_listat(fej)
puts "Rendezett lista:"
kiir_csatolt_listat(rendezett_fej)
# Csomópont törlése
torlendo_adat = 2
fej = torol_csomopontot(fej, torlendo_adat)
puts "A(z) #{torlendo_adat} értékű csomópontot töröltük:"
kiir_csatolt_listat(fej)
Létrehoztam egy CsomoPont osztályt, majd egy kiir_csatolt_listat függvényt, ami végigiterál a csatolt listán és kiírja az értékeket. A rendez_csatolt_listat függvény rendez egy csatolt listát, a torol_csomopontot függvény pedig megtalálja és törli a megadott értékű csomópontot.
Csomópont rendezése és törlése csatolt listában:
class CsomoPont
attr_accessor :adat, :kovetkezo
def initialize(adat)
@adat = adat
@kovetkezo = nil
end
end
def kiir_csatolt_listat(fej)
jelenlegi = fej
while jelenlegi
print "#{jelenlegi.adat} "
jelenlegi = jelenlegi.kovetkezo
end
puts
end
def rendez_csatolt_listat(fej)
return nil if fej.nil?
adatok = []
jelenlegi = fej
while jelenlegi
adatok.push(jelenlegi.adat)
jelenlegi = jelenlegi.kovetkezo
end
rendezett_adatok = adatok.sort
rendezett_fej = CsomoPont.new(rendezett_adatok[0])
akt = rendezett_fej
for i in 1..(rendezett_adatok.length - 1)
akt.kovetkezo = CsomoPont.new(rendezett_adatok[i])
akt = akt.kovetkezo
end
rendezett_fej
end
def torol_csomopontot(fej, cel_adat)
return nil if fej.nil?
if fej.adat == cel_adat
return fej.kovetkezo
end
jelenlegi = fej
elozo = nil
while jelenlegi && jelenlegi.adat != cel_adat
elozo = jelenlegi
jelenlegi = jelenlegi.kovetkezo
end
return fej if jelenlegi.nil?
elozo.kovetkezo = jelenlegi.kovetkezo
fej
end
# Példa csatolt lista létrehozása
fej = CsomoPont.new(4)
fej.kovetkezo = CsomoPont.new(2)
fej.kovetkezo.kovetkezo = CsomoPont.new(1)
fej.kovetkezo.kovetkezo.kovetkezo = CsomoPont.new(3)
# Csatolt lista kiírása
puts "Eredeti lista:"
kiir_csatolt_listat(fej)
# Csatolt lista rendezése
rendezett_fej = rendez_csatolt_listat(fej)
puts "Rendezett lista:"
kiir_csatolt_listat(rendezett_fej)
# Csomópont törlése
torlendo_adat = 2
fej = torol_csomopontot(fej, torlendo_adat)
puts "A(z) #{torlendo_adat} értékű csomópontot töröltük:"
kiir_csatolt_listat(fej)
A rendez_csatolt_listat függvény a csomópontokat egy listába gyűjti, majd ezt a listát rendezve létrehoz
egy új csatolt listát. A torol_csomopontot függvény megtalálja és törli a megadott értékű csomópontot a
csatolt listából. Az eredményeket kiírja a kiir_csatolt_listat függvény segítségével.
Nincsenek megjegyzések:
Megjegyzés küldése