2024. január 14., vasárnap

Csatolt lista létrehozására, rendezésére és törlésére Go programozási nyelven

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