Thread Verkettete Listen (46 answers)
Opened by DarKo87 at 2012-11-21 07:46

hlubenow
 2012-11-23 17:34
#163586 #163586
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2012-11-22T23:08:30 Raubtier
Schaue dir bitte einmal den C-Befehl realloc an! Klappt das nicht, muss man halt umkopieren. Man macht das Array aber in der Regel größer als die Anzahl der Elemente, sodass man ohne Größenänderung noch was einfügen kann. Erst wenn die Maximalgröße überschritten würde, muss man das Array größer machen.

Hmm, ich meinte jetzt erstmal statische C-Arrays wie hier:

http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/...

bei denen das nicht geht. Es gibt schon auch welche, die man mit "realloc()" größer machen kann, aber für die muß man zuvor erstmal mit "malloc()" Speicher reserviert haben, mit denen muß man also anders umgehen, als man das von Perl-Arrays gewohnt ist.
Bei Perl-Arrays ist doch gerade die Sache, daß nicht von vornherein bekannt ist, wie groß sie am Ende sein werden. Eben ein flexibler, dynamischer Datentyp. In denen man zudem noch ganz verschiedene Daten gleichzeitig speichern kann: Zahlen und Zeichen/Zeichenketten (Skalare) und Referenzen (möglicherweise auf weitere Perl-Arrays). Alles kreuz und quer und durcheinander.
Das alles ist mit C-Arrays, auch mit dynamischen, nicht so leicht umzusetzen. Das ist ja gerade der Witz von Perl.
Quote
Selbstverständlich handelt es sich um arrays!

Nun, mag sein.
Quote
Außerdem verwirrst du, indem du my @l eine Liste nennst. @l ist ein Array. Eine Liste in Perl ist etwas wie (1,2,3).
perldoc -q 'difference between a list and an array'

Das perldoc sagt:
Quote
An array has a changeable length. A list does not.

Also in Python gibt es veränderbare Listen ("a = [1, 2, 3]") und unveränderbare Tupel ("a = (1, 2, 3)").
Da Perl hier nicht ebenso zwei verschiedene Datentypen dafür anbietet, glaube ich, ist der Unterschied in Perl nicht so wichtig.

View full thread Verkettete Listen