JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=14ad160ea85c97f8c8ce39bfbb499ff5Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

C# Verkettete Liste Rekursiv

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 19.01.2012, 13:16    Titel: C# Verkettete Liste Rekursiv Antworten mit Zitat

Hallo leute,

ich habe ein Problem. Habe mich mit Verketteten Listen vertraut gemacht. Nun habe ich ein kleines Problem. Ich will nicht das das Programm die ganze Liste von Index0 .....N nur geht sonder ich will gleich das er am Ende das neue Element einfügt und nicht komplett alle Elemente wieder durch geht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 19.01.2012, 15:58    Titel: Antworten mit Zitat

CPP:
LinkedList<int> myLinkedList;

myLinkedList = new LinkedList<int>();
myLinkedList.AddFirst(17);
myLinkedList.AddLast(42);
myLinkedList.RemoveFirst();
myLinkedList.RemoveLast();

_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 19.01.2012, 16:04    Titel: Antworten mit Zitat

CPP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CShp4
{
    // die Klasse für die Listenelemente
    // jetzt auch mit Methoden
    class Listenelement
    {
        string daten;
        Listenelement naechster;

        // die Methode zum Setzen der Daten
        public void SetDaten(string datenNeu)
        {
            // die Zeichenkette setzen
            daten = datenNeu;
            // das Ende markieren
            naechster = null;
        }

        // Die Methode zum Anhängen eines neuen Elements
        // sie ruft sich rekursiv auf, bis das Ende erreicht
        // ist
        public void Anhaengen(string datenNeu)
        {
            // wenn das Ende erreicht ist, ein neues
            // Element erzeugen
            if (naechster == null)
            {
                naechster = new Listenelement();
                naechster.SetDaten(datenNeu);
            }
            // sonst ruft sich die Methode selbst wieder
            //auf
            else
            {
                naechster.Anhaengen(datenNeu);
            }
            // zur Veranschaulichung der Rekursion
            Console.WriteLine("Daten {0} wurden einfügt.", datenNeu);
        }

        // die Methode zur Ausgabe der Liste
        // sie ruft sich ebenfalls rekursiv auf, bis das
        // Ende erreicht ist
        public void Ausgeben()
        {
            Console.WriteLine(daten);
            if(naechster != null)
            {
                naechster.Ausgeben();
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // ein neues Listenelement erzeugen
             Listenelement listenAnfang = new Listenelement();

            // die Daten im ersten Listenelement setzen
             listenAnfang.SetDaten("Element 1");

            // weitere Elemente in einer Schleife anfügen
             for (int element = 2; element < 10000000; element++)
             {
                 listenAnfang.Anhaengen("Element " + element);
             }
            // die Liste ausgeben
             listenAnfang.Ausgeben();
            Console.ReadLine();
        }
    }
}


Also das ist mein Code. Wie kann man das so nach prüfen ob das auch klappt das er das Letzte Element speichert und es am Letzen in der Liste anfügt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 20.01.2012, 13:54    Titel: Antworten mit Zitat

Du hast hier ja eine Art Verkettete Liste selbst geschrieben. Die gibt es aber schon.

Mit deinem Beispiel wäre das eine Verkettete Liste vom Typ String (Daten)
also:
CPP:
class Program
{
  static void Main()
  {
    // eine neue Verlinkte Liste erstellen.
    LinkedList<string> liste = new LinkedList<string>();
    // die Daten in die Liste einfügen
    liste.AddLast("Element 1");
    liste.AddLast("Element 2");
    // die Liste ausgeben
    foreach(string element in liste) {
      // Console.WriteLine(element);
    }
    Console.ReadLine();
  }
}


Wenn du eine solche Liste selbst implementieren möchtest, setze dich mit den passenden Interfaces auseinander:
- IEnumerable<T>
- ICollection<T>
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 20.01.2012, 14:49    Titel: Antworten mit Zitat

Oh man das hört sich ja alles Kompliziert an -.-. Dachte das geht auch einfacher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 20.01.2012, 19:13    Titel: Antworten mit Zitat

Verstehe ich nicht? Was meinst du mit einfacher? Einfacher als meine 5 Zeiln geht es doch nicht mehr...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
City Hunter
Super JLI'ler


Alter: 38
Anmeldedatum: 18.04.2004
Beiträge: 330
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 20.01.2012, 20:49    Titel: Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:


Wenn du eine solche Liste selbst implementieren möchtest, setze dich mit den passenden Interfaces auseinander:
- IEnumerable<T>
- ICollection<T>


tut mir leid meinte das hier. mache gerade ein Fernstudium zum Informatiker. und muss halt eine aufgabe einsenden. und das ist die die ich da rein gepostet habe.

und für ein son heft hat man immer 2 wochen zeit nach lernplan.

Und wenn ich mich jetzt noch mit Interfaces auseinander setzen muss frage ich mich warum er das nicht gleich mit reingenommen hat so basis Theorie.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 21.01.2012, 00:51    Titel: Antworten mit Zitat

Ich denke, mit dem Interface kannst du deinen Container auch mit Standardalgorithmen benutzen, und sonst noch ne menge lustiger Dinge damit machen. Für eine Uni-Übungsaufgabe brauchst du das aber vermutlich nicht, sonst stände es dabei.
Ich denke es geht hierbei eher darum, die Grundlagen von C# und verketteten Listen zu verstehen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 21.01.2012, 21:54    Titel: Antworten mit Zitat

Das hattest du ja auch nicht geschrieben.
Wenn es also darum geht, zu zeigen, wie verkettete Listen funktionieren, welche auch "schnell" von hinten anfügen können, schaue dir "doppelt verkettete Listen" an. wenn es darum geht, wie man c# benutzt, kannst du meine Lösung nutzen, die LinkedList-Klasse ist eine fertig implementierte doppelt verkettete Liste.
Du kannst dir mit dem .Net Reflector auch den Quellcode der Klassenbibliothek anschauen - oder du nutzt die QuellcodeBibliotheken von Microsoft (Einstellung im Visual Studio) und debuggst dich per Einzelschritt durch die Klasse LinkedList.
Interfaces werden benutzt, um Funktionalitäten unabhängig vom Klassennamen bereitzustellen. IEnumerable<T> ist ein Interface, mit dem eine Klasse aus "Aufzählbar vom Typ T" deklariert wird. Also alle Klassen, welche IEnumerable implementieren können z.B. mit foreach aufgezählt werden. Weitere Beispiele wären IEquatable<T> (Klasse ist vergleichbar mit dem Typ T), ICollection<T> (Klasse ist eine Collection vom Typ T, also eine Sammlung von Elementen des Types T), IList (Klasse ist eine Liste vom Typ T, eine Liste ist eine Sammlung mit zusätzlichen Funktionen) oder IComparable<T> (Klasse ist vergleichbar mit Typ T, im Gegensatz zu IEquatable<T> aber nicht nur gleich oder ungleich sondern kleiner, gleich oder größer)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum