|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 19.01.2012, 13:16 Titel: C# Verkettete Liste Rekursiv |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 19.01.2012, 15:58 Titel: |
|
|
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 |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 19.01.2012, 16:04 Titel: |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 20.01.2012, 13:54 Titel: |
|
|
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 |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 20.01.2012, 14:49 Titel: |
|
|
Oh man das hört sich ja alles Kompliziert an -.-. Dachte das geht auch einfacher. |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 20.01.2012, 19:13 Titel: |
|
|
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 |
|
|
City Hunter Super JLI'ler
Alter: 39 Anmeldedatum: 18.04.2004 Beiträge: 330 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 20.01.2012, 20:49 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.01.2012, 00:51 Titel: |
|
|
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 |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 21.01.2012, 21:54 Titel: |
|
|
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 |
|
|
|
|
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
|