package main
import "fmt"
// CsomoPont reprezentál egy csomópontot a csatolt listában
type CsomoPont struct {
Adat int
Kovetkezo *CsomoPont
}
// CsatoltLista egy csatolt listát reprezentál
type CsatoltLista struct {
Fej *CsomoPont
}
// KiirCsatoltListat kiírja a csatolt lista elemeit
func (lista *CsatoltLista) KiirCsatoltListat() {
jelenlegi := lista.Fej
for jelenlegi != nil {
fmt.Printf("%d ", jelenlegi.Adat)
jelenlegi = jelenlegi.Kovetkezo
}
fmt.Println()
}
// HozzaadCsomopont hozzáad egy új csomópontot a csatolt listához
func (lista *CsatoltLista) HozzaadCsomopont(adat int) {
ujCsomoPont := &CsomoPont{Adat: adat, Kovetkezo: nil}
if lista.Fej == nil {
lista.Fej = ujCsomoPont
return
}
jelenlegi := lista.Fej
for jelenlegi.Kovetkezo != nil {
jelenlegi = jelenlegi.Kovetkezo
}
jelenlegi.Kovetkezo = ujCsomoPont
}
// RendezCsatoltListat rendezés a csatolt lista elemein
func (lista *CsatoltLista) RendezCsatoltListat() {
if lista.Fej == nil || lista.Fej.Kovetkezo == nil {
return
}
rendezett := false
for !rendezett {
rendezett = true
elozo := (*CsomoPont)(nil)
jelenlegi := lista.Fej
for jelenlegi.Kovetkezo != nil {
if jelenlegi.Adat > jelenlegi.Kovetkezo.Adat {
rendezett = false
if elozo != nil {
elozo.Kovetkezo, jelenlegi.Kovetkezo, jelenlegi.Kovetkezo.Kovetkezo = jelenlegi.Kovetkezo, jelenlegi.Kovetkezo.Kovetkezo, jelenlegi
} else {
lista.Fej, jelenlegi.Kovetkezo, jelenlegi.Kovetkezo.Kovetkezo = jelenlegi.Kovetkezo, jelenlegi.Kovetkezo.Kovetkezo, jelenlegi
}
}
elozo, jelenlegi = jelenlegi, jelenlegi.Kovetkezo
}
}
}
// TorolCsomopontot eltávolítja a megadott értékű csomópontot a csatolt listából
func (lista *CsatoltLista) TorolCsomopontot(celAdat int) {
for lista.Fej != nil && lista.Fej.Adat == celAdat {
lista.Fej = lista.Fej.Kovetkezo
}
elozo := (*CsomoPont)(nil)
jelenlegi := lista.Fej
for jelenlegi != nil {
if jelenlegi.Adat == celAdat {
if elozo != nil {
elozo.Kovetkezo = jelenlegi.Kovetkezo
}
} else {
elozo = jelenlegi
}
jelenlegi = jelenlegi.Kovetkezo
}
}
func main() {
// Példa csatolt lista létrehozása
csatoLista := &CsatoltLista{}
csatoLista.HozzaadCsomopont(4)
csatoLista.HozzaadCsomopont(2)
csatoLista.HozzaadCsomopont(1)
csatoLista.HozzaadCsomopont(3)
// Csatolt lista kiírása
fmt.Println("Eredeti lista:")
csatoLista.KiirCsatoltListat()
// Csatolt lista rendezése
csatoLista.RendezCsatoltListat()
fmt.Println("Rendezett lista:")
csatoLista.KiirCsatoltListat()
// Csomópont törlése
torlendoAdat := 2
csatoLista.TorolCsomopontot(torlendoAdat)
fmt.Printf("A(z) %d értékű csomópontot töröltük:\n", torlendoAdat)
csatoLista.KiirCsatoltListat()
}
Ebben a példában CsomoPont struktúra reprezentál egy csomópontot, a CsatoltLista típus pedig a csatolt listát. A KiirCsatoltListat, HozzaadCsomopont, RendezCsatoltListat és TorolCsomopontot 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 fmt.Println segítségével írjuk ki a konzolra.
Nincsenek megjegyzések:
Megjegyzés küldése