Hallo,
ich habe bereits in Swift ein einfachverkettet Liste erstellt.
Alles anzeigen
Jetzt soll diese Liste in Objective-C mit der folgende Aufgabenstellung erfolgen:
Alles anzeigen
Alles anzeigen
Alles anzeigen
Bitte kann mir da einer helfen?!
Lg Iman
ich habe bereits in Swift ein einfachverkettet Liste erstellt.
Quellcode
- import Foundation
- // die Klasse für die Listenelemente
- class Liste {
- var daten = ""
- // die Referenz auf das nächste Element
- var naechster: Liste?
- // die Daten für ein Element setzen
- // die Zeichenkette wird übergeben
- func setDaten(datenNeu: String) {
- // die Zeichenkette setzen
- daten = datenNeu
- // das Ende markieren
- naechster = nil
- }
- // ein neues Element am Ende der Liste anhängen
- // die Zeichenkette wird übergeben
- func anhaengen(datenNeu: String) -> Liste {
- naechster = Liste()
- naechster!.setDaten(datenNeu: datenNeu)
- return naechster!
- }
- // die Ausgabe der kompletten Liste
- func ausgeben() {
- print(daten)
- if naechster != nil {
- naechster!.ausgeben()
- }
- }
- }
- // ein neues Listenelement erzeugen
- var listenAnfang = Liste()
- // für das Listenende
- var listenEnde = listenAnfang
- // die Daten im ersten Listenelement setzen
- listenAnfang.setDaten(datenNeu: "Element 1")
- // weitere Elemente in einer Schleife anfügen
- var element = 2
- for element in 2 ..< 10 {
- listenEnde = listenEnde.anhaengen(datenNeu: "Element " + String(element))
- }
- // die Liste ausgeben
- listenAnfang.ausgeben()
Jetzt soll diese Liste in Objective-C mit der folgende Aufgabenstellung erfolgen:
- Erstellen Sie die einfach verkette Liste mit Objekten, die Sie bereits mit Swift erstellt haben, als Objective-C-Terminalprogramm. Neue Elemente sollen dabei immer direkt am Ende der Liste angefügt werden. Das Programm soll also nicht erst nach dem Ende der Liste suchen. Lassen Sie die Liste sowohl vorwärts als auch rückwärts ausgeben. Wie Sie die Ausgaben umsetzen, bleibt Ihnen überlassen. Dokumentieren Sie Ihren Ansatz aber ausführlich.
Bitte achten Sie bei der Programmierung darauf, dass Sie für die Verbindung der Listenelemente untereinander statt der Referenz einen Zeiger auf die Klasse selbst verwenden müssen. Auch die Klasse NSString erwartet einen Zeiger
C-Quellcode: Klasse Listenelement
- // Listenelement.h
- #import <Foundation/Foundation.h>
- @interface Listenelement : NSObject
- // die Properties
- @property NSString* daten;
- @property Listenelement* naechster;
- // die Methode zum Setzen der Daten
- - (void) datenSetzen: (NSString*) datenNeu;
- // die Methode zum Anhängen eines neuen Elements
- - (Listenelement*) datenAnhaengen: (NSString*) datenNeu;
- // die Methode zur Ausgabe der Liste
- - (void) ausgabe;
- @end
C-Quellcode: Klasse Listenelement
- #import "Listenelement.h"
- @implementation Listenelement
- // die Methode zum Setzen der Daten
- - (void) datenSetzen:(NSString *)datenNeu {
- // die Zeichenkette setzen
- _daten = datenNeu;
- // das Ende markieren
- _naechster = nil;
- NSLog(@"Daten %@", datenNeu);
- }
- // die Methode zum Anhängen eines neuen Elements
- // die Zeichenkette wird übergeben
- // die Funktion liefert jetzt auch das Ende zurück
- - (Listenelement*) datenAnhaengen:(NSString *)datenNeu {
- _naechster = self;
- [_naechster datenSetzen: datenNeu];
- return _naechster;
- }
- // Komplette Liste ausgeben
- // die Methode ruft sich rekursiv auf, bis das Ende erreicht ist
- - (void) ausgabe {
- //NSLog(@"%@", _daten);
- if (_naechster != nil) {
- [_naechster ausgabe];
- }
- }
- @end
C-Quellcode: Main Datei
- #import <Foundation/Foundation.h>
- #import "Listenelement.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // Instanz erzeugen
- Listenelement *neueListe = [[Listenelement alloc] init];
- // Listenende abspeichern
- NSString* listenEnde = neueListe;
- // die Daten im ersten Listenelement setzen
- [neueListe datenSetzen: (@"Element 1")];
- // weitere Elemente in einer Schleife anfügen
- for (int element = 2; element < 10; element++) {
- listenEnde = [neueListe datenAnhaengen:[NSString stringWithFormat:@"Element %d", element]];
- }
- // die Liste ausgeben
- [neueListe ausgabe];
- }
- return 0;
- }
Bitte kann mir da einer helfen?!
Lg Iman