WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Linked List

 

sierkt
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 31.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2009, 22:31     Titel: Linked List
  Antworten mit Zitat      
Hallo,
brauche mal wieder Hilfe von den Experten hier.

Ich habe eine Klasse "Punkt" die Objekte erzeugt. A, B, C, etc.
Diese erzeugten Objekte stellen Knoten in einer Linked List dar. Die Knotenpunkt Objekte habe ich mit Hilfe der MATLAB "dlnode" Klasse erzeugt und danach anhand der Funktion

B.insertAfter(A) etc.

in Reihenfolge gebracht. Somit hat jedes Objekt Informationen zum nächsten bzw. vorheringen Objekt in der Linked List.

A.Next = B
B.Prev = A
B.Next = C etc.

Ist es möglich, diese Objekte in der Linked List zu zählen und jedem Objekt eine Laufnummer zu geben?
z.B.:
Objekt A ist Element 1, Objekt B ist Element 2, Objekt C ist Element 3. Anzahl Objekte ist 3.

Gruß,
Sierk
Private Nachricht senden Benutzer-Profile anzeigen


Nicolas S.
Forum-Century

Forum-Century


Beiträge: 143
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 19.11.2009, 11:02     Titel:
  Antworten mit Zitat      
Hallo,

ja ist es, aber nicht besonders einfach:
Ein Objekt kennt seinen Vorgänger. Der Vorgänger kennt seinen. Der letzte Vorgänger hat keinen mehr.

Man kann eine rekursive Funktion implementieren, die die Anzahl der Vorgänger ermittelt. Die Anzahl der Vorgänger die die Anzahl der Vorgänger des Vorgängers plus eins. Ist obj.Prev leer ist die Anzahl der Vorgänger Null.

Wenn Deine Objekte einen Ring bilden, weil ein Nachfolger eines Nachfolgers ein Vorgänger ist gibt das allerdings einen lustigen Absturz in Matlab (R2009a) oder einen Überlauf mit Fehlermeldung (R2009b), wenn man das nicht abfängt. (Maximale Rekursionstiefe festlegen)

EDIT: Als rekursive Funktion bietet sich eine GET-Funktion für eine dependent Property "NumPrev" oder so an.
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 19.11.2009, 11:49     Titel:
  Antworten mit Zitat      
Hallo,

wobei die Funktion nicht rekursiv sein muss, oder? Eine Schleife a la
Code:
num = 1;
while obj.hasNext();
 obj = obj.next();
  num = num + 1;
end
 


müsste es auch tun. Das würde auch eine Liste mit mehr als 500 Elementen erlauben (default Rekursionstiefe). Hilft allerdings nicht bei dem von Nicolas erwähntem Ring Wink.

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum 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.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.