Linkedlist in Strukture

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Linkedlist in Strukture

Beitrag von Konne »

Wie kann man eine LinkedList in eine Structure machen.
Also in etwa so:


Code: Alles auswählen

structure
Long.l
String.s
LinkedList()
endstructure
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Garnicht. Musst dir selbst Funktionen für die Linked List programmieren.
Oder du suchst nach "Linked List" von Remi_Meier. Er hat mal ein paar
Funktionen gepostet, mit denen man dynamisch mit den PB Linked Lists
arbeiten konnte.
Bild
Benutzeravatar
crossroads
Beiträge: 244
Registriert: 29.08.2004 05:41
Wohnort: Rhine Main Area

Beitrag von crossroads »

Ich hatte eine haarsträubende Idee, die ich mal versucht habe umzusetzen; und siehe da: es geht :D

Der folgende Code ist aber aus der Abteilung "Kraut und Rüben" und mit Vorsicht zu genießen - hier werden wild Pointer verbogen - also Achtung:

Code: Alles auswählen


Structure test
  x.l
  y.l
  pntrLL.l
EndStructure

NewList List1()
NewList List2()
NewList chkList()
AddElement(chkList())

Procedure checkout(*chck.test)
  ChangeCurrentElement(chkList(), *chck\pntrLL)
  chkList() + 22
EndProcedure  

DefType.test var1, var2

AddElement(List1()):List1() = 55
AddElement(List1()):List1() = 99
FirstElement(List1())
AddElement(List2()):List2() = 123

var1\pntrLL = @List1()
var2\pntrLL = @List2()

Debug "-------- var1 ----------"
Debug "vorher: " + Str(List1())
checkout(var1)
Debug "nachher: " + Str(List1())
NextElement(List1())
Debug List1()

Debug "-------- var2 ----------"
Debug "vorher: " + Str(List2())
checkout(var2)
Debug "nachher: " + Str(List2())
@Konne
Ob Dir das hilft? Ich glaub's eher nicht; aber vorenthalten wollte ich Euch diese "Blume im Codedschungel" auch nicht :mrgreen:
Man soll die Tür aufmachen, bevor man durchgeht ...
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Es hilft mir schon ist aber doch zu gefrickelt. Und in der Hilfe steht man soll keine Pointer verbiegen :)
Nunja man kann die Daten ja immernoch mit Trennzeichen in einen String schreiben. Schade das es nicht ungefrickelt geht:(
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Du kannst auch eine Array in der Struktur benutzen :freak:.
Bild
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Es gibt doch mittlerweile genügend andere LinkedLists, die man benutzen
kann, in der "Codes, Tipps & Tricks"-Sektion. Sogar meine TreeLL wäre
dafür geeignet, nur etwas überladen.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Nunja ich mache es jetzt so das ich eine Pointer auf eine Buffer reinschreibe. In den Buffer schreibe ich am Anfang die gesammte Lenge und dann immer die Infos. So geht Ein Element Adden dank ReallocateMemory und der gesammten Länge ziemlich schnell. Und da ich auch nachträglich keine Infos ändern sondern nur auslesen muss ist es so doch ziemlich effektiv.
Antworten