Hallo,
ich weiß nicht, ob das Thema schonmal hier erfragt oder behandelt wurde?!
Ich bin auch Anfänger und bin dabei Swift zu lernen.
Ich muss ein einfach verkettete Liste mit Objekten so erweitern, dass das Listenende beim Anhängen neuer Elemente nicht immer wieder neu ermittelt werden muss, sondern neue Elemente direkt am Ende der Liste angehängt werden können.
Die Hilfestellung dazu lautet:
1. Ich muss neben dem Anfang der Liste jetzt auch das Ende der Liste in einer Instanz speichern können.
2. Setze diese Instanz nach dem Anhängen neuer Elemente jeweils auf das aktuelle Ende der Liste.
Der Ursprüngliche Code sieht so aus:
import Foundation
// die Klasse für die Listenelemente
// jetzt auch mit Methoden
class Listenelement {
var daten = ""
// die Referenz auf das nächste Element
var naechster: Listenelement?
// die Daten für ein Element setzen
// übergeben wird die Zeichenkette
func setDaten(datenNeu: String) {
// die Zeichenkette setzen
daten = datenNeu
// das Ende markieren
naechster = nil
}
// ein neues Element am Ende der Liste anhängen
// übergeben wird die Zeichenkette
// das eigentliche Einfügen erfolgt über die Methode
// setDaten()
// die Methode ruft sich rekursiv auf, bis das Ende erreicht ist
func anhaengen(datenNeu: String) {
// wenn das Ende erreicht ist, ein neues Element erzeugen
if naechster == nil {
naechster = Listenelement()
naechster!.setDaten(datenNeu: datenNeu)
}
// sonst ruft sich die Methode selbst wieder auf
else {
naechster!.anhaengen(datenNeu: datenNeu)
}
// zur Veranschaulichung der Rekursion
print("Daten \(datenNeu) wurde eingefügt!")
}
// die Ausgabe der kompletten Liste
// die Methode ruft sich ebenfalls rekursiv auf, bis das Ende
// erreicht ist
func ausgeben() {
print(daten)
if naechster != nil {
naechster!.ausgeben()
}
}
}
// ein neues Listenelement erzeugen
let listenAnfang = Listenelement()
// die Daten im ersten Listenelement setzen
listenAnfang.setDaten(datenNeu: "Element 1")
// weitere Elemente in einer Schleife anfügen
for element in 2 ..< 10 {
listenAnfang.anhaengen(datenNeu: "Element " + String(element))
}
// die Liste ausgeben
listenAnfang.ausgeben()
Meine veränderte Version:
import Foundation
//die Klasse für die Listenelemente
//jetzt auch mit Methoden
class Listenelement {
var daten = ""
//die Referenz auf das nächste Element
var naechster: Listenelement?
var letzter: Listenelement?
//die Daten für ein Element setzen
//übergeben wird die Zeichenkette
func setDaten(datenNeu: String) {
//die Zeichenkette setzen
daten = datenNeu
//das Ende markieren
naechster = nil
}
//ein neues Element am Ende der Liste anhängen
//übergeben wird die Zeichenkette
//das eigentliche Einfügen erfolgt über die Methode setDaten()
//die Methode ruft sich rekursiv auf, bis das Ende erreicht ist
func anhaengen(datenNeu: String) {
//wenn das Ende erreicht ist, ein neues Element erzeugen
if naechster == nil {
naechster = Listenelement()
naechster!.setDaten(datenNeu: datenNeu)
letzter = naechster
}
//sonst ruft sich die Methode selbst wieder auf
else {
naechster!.anhaengen(datenNeu: datenNeu)
letzter = naechster
}
//zur Veranschaulichung der Rekursion
print("Daten \(datenNeu) wurden eingefügt.")
}
// die Ausgabe der kompletten Liste
// die Methode ruft sich ebenfalls rekursiv auf, bis das Ende erreicht ist
func ausgeben() {
print(daten)
if naechster != nil {
naechster!.ausgeben()
}
}
}
//ein neues Listenelement erzeugen
let listenAnfang = Listenelement()
let listenEnde = Listenelement()
//die Daten im ersten Listenelement setzen
//listenAnfang.setDaten(datenNeu: "Element 1")
listenEnde.setDaten(datenNeu: "Test 1")
//weitere Elemente in einer Schleife anfügen
for element in 2 ..< 10 {
//listenAnfang.anhaengen(datenNeu: "Element " + String(element))
listenEnde.anhaengen(datenNeu: "Test " + String(element))
}
//die Liste ausgeben
//listenAnfang.ausgeben()
listenEnde.ausgeben()
Ist das überhaupt richtig, was ich hier gemacht habe????
Danke!
ich weiß nicht, ob das Thema schonmal hier erfragt oder behandelt wurde?!
Ich bin auch Anfänger und bin dabei Swift zu lernen.
Ich muss ein einfach verkettete Liste mit Objekten so erweitern, dass das Listenende beim Anhängen neuer Elemente nicht immer wieder neu ermittelt werden muss, sondern neue Elemente direkt am Ende der Liste angehängt werden können.
Die Hilfestellung dazu lautet:
1. Ich muss neben dem Anfang der Liste jetzt auch das Ende der Liste in einer Instanz speichern können.
2. Setze diese Instanz nach dem Anhängen neuer Elemente jeweils auf das aktuelle Ende der Liste.
Der Ursprüngliche Code sieht so aus:
import Foundation
// die Klasse für die Listenelemente
// jetzt auch mit Methoden
class Listenelement {
var daten = ""
// die Referenz auf das nächste Element
var naechster: Listenelement?
// die Daten für ein Element setzen
// übergeben wird die Zeichenkette
func setDaten(datenNeu: String) {
// die Zeichenkette setzen
daten = datenNeu
// das Ende markieren
naechster = nil
}
// ein neues Element am Ende der Liste anhängen
// übergeben wird die Zeichenkette
// das eigentliche Einfügen erfolgt über die Methode
// setDaten()
// die Methode ruft sich rekursiv auf, bis das Ende erreicht ist
func anhaengen(datenNeu: String) {
// wenn das Ende erreicht ist, ein neues Element erzeugen
if naechster == nil {
naechster = Listenelement()
naechster!.setDaten(datenNeu: datenNeu)
}
// sonst ruft sich die Methode selbst wieder auf
else {
naechster!.anhaengen(datenNeu: datenNeu)
}
// zur Veranschaulichung der Rekursion
print("Daten \(datenNeu) wurde eingefügt!")
}
// die Ausgabe der kompletten Liste
// die Methode ruft sich ebenfalls rekursiv auf, bis das Ende
// erreicht ist
func ausgeben() {
print(daten)
if naechster != nil {
naechster!.ausgeben()
}
}
}
// ein neues Listenelement erzeugen
let listenAnfang = Listenelement()
// die Daten im ersten Listenelement setzen
listenAnfang.setDaten(datenNeu: "Element 1")
// weitere Elemente in einer Schleife anfügen
for element in 2 ..< 10 {
listenAnfang.anhaengen(datenNeu: "Element " + String(element))
}
// die Liste ausgeben
listenAnfang.ausgeben()
Meine veränderte Version:
import Foundation
//die Klasse für die Listenelemente
//jetzt auch mit Methoden
class Listenelement {
var daten = ""
//die Referenz auf das nächste Element
var naechster: Listenelement?
var letzter: Listenelement?
//die Daten für ein Element setzen
//übergeben wird die Zeichenkette
func setDaten(datenNeu: String) {
//die Zeichenkette setzen
daten = datenNeu
//das Ende markieren
naechster = nil
}
//ein neues Element am Ende der Liste anhängen
//übergeben wird die Zeichenkette
//das eigentliche Einfügen erfolgt über die Methode setDaten()
//die Methode ruft sich rekursiv auf, bis das Ende erreicht ist
func anhaengen(datenNeu: String) {
//wenn das Ende erreicht ist, ein neues Element erzeugen
if naechster == nil {
naechster = Listenelement()
naechster!.setDaten(datenNeu: datenNeu)
letzter = naechster
}
//sonst ruft sich die Methode selbst wieder auf
else {
naechster!.anhaengen(datenNeu: datenNeu)
letzter = naechster
}
//zur Veranschaulichung der Rekursion
print("Daten \(datenNeu) wurden eingefügt.")
}
// die Ausgabe der kompletten Liste
// die Methode ruft sich ebenfalls rekursiv auf, bis das Ende erreicht ist
func ausgeben() {
print(daten)
if naechster != nil {
naechster!.ausgeben()
}
}
}
//ein neues Listenelement erzeugen
let listenAnfang = Listenelement()
let listenEnde = Listenelement()
//die Daten im ersten Listenelement setzen
//listenAnfang.setDaten(datenNeu: "Element 1")
listenEnde.setDaten(datenNeu: "Test 1")
//weitere Elemente in einer Schleife anfügen
for element in 2 ..< 10 {
//listenAnfang.anhaengen(datenNeu: "Element " + String(element))
listenEnde.anhaengen(datenNeu: "Test " + String(element))
}
//die Liste ausgeben
//listenAnfang.ausgeben()
listenEnde.ausgeben()
Ist das überhaupt richtig, was ich hier gemacht habe????
Danke!