Seite 2 von 3

Verfasst: 04.10.2005 18:13
von Spirit
andi256 hat geschrieben:oder mit CompareMemory(*MemoryID1, *MemoryID2, Länge)
Das wird bei Linked Lists nicht funktionieren, da die Elemente in der Regel verstreut im Speicher und nicht nacheinander liegen.

Verfasst: 04.10.2005 18:22
von freedimension
Konne hat geschrieben:Also wenn ein Fehler gemeldet werden soll wenn die Listen net gleich sind würde ich das spaßeshalber mit MD5 Hashs oder so machen...
Spaßeshalber kannst du das ja gerne machen, stellt sich mir nur noch die Frage was es bringen soll :)

Verfasst: 04.10.2005 19:54
von dietmar
Nein die Zahlen sind nicht geordnet. Wenn in der einen Liste die Zahlen 123456 sind und in der anderen die Zahlen 233357, möcht ich zum einen Wissen welche Zahlen fehlen, und welche Zahlen wie oft doppelt vorhanden sind was ich dann gerne in der einen Liste speichern möchte. Das mir in für die eine Liste ein NextElement vorhanden ist, liegt daran das mir das mit dem verschachteln im Prinzip klar ist, die Frage ist nur wie.

Verfasst: 04.10.2005 20:36
von Kaeru Gaman
@dietmar

mal pseudecode, geht schneller:

Code: Alles auswählen

resetlist schlecht
while nextelement schlecht
    resetlist gut
    while nextelement gut
        if schlecht = gut
            count+1
        endif
    wend
wend
...so ungefähr halt... ;)

Verfasst: 04.10.2005 20:42
von vonTurnundTaxis
Ist in diesem Fall ForEach - Next nicht besser als While - Wend?

Verfasst: 04.10.2005 21:01
von Kaeru Gaman
vonTurnundTaxis hat geschrieben:Ist in diesem Fall ForEach - Next nicht besser als While - Wend?
...oder so... kommt aber doch ziemlich aufs gleiche raus, oder?

Verfasst: 04.10.2005 21:08
von dietmar
Ja so in die richtung dacht ich mir das auch.

Code: Alles auswählen

ResetList(Schlecht())
While NextElement(Schlecht())
    ResetList(Gut())
     While NextElement(Gut())
         If LPLSchlecht()\Nummer = LPLGut()\Nummer
            LPLSchlecht()\Anzahl = Schlecht()\Anzahl + 1
         EndIf
    Wend
Wend
nur dass dies nicht den gewünschten Erfolg bringt. Die Lösung ist bestimmt wieder so einfach.

Verfasst: 04.10.2005 21:26
von Kaeru Gaman
dietmar.. was ist denn dieses LPL?


ohne deine listen zu kennen...
du musst natürlich elemente der listen vergleichen, die du in der schleife durchgehst...

Code: Alles auswählen

ResetList(Schlecht()) 
While NextElement(Schlecht()) 
    ResetList(Gut()) 
    While NextElement(Gut()) 
        If Schlecht()\Nummer = Gut()\Nummer 
            Zähler + 1 
        EndIf 
    Wend 
Wend 
LPLGut() ist eine ganz andere Liste als Gut()

...welche namen hast du denn im NewList-command ?

Verfasst: 04.10.2005 21:33
von freedimension
dietmar hat geschrieben:

Code: Alles auswählen

ResetList(Schlecht())
While NextElement(Schlecht())
    ResetList(Gut())
     While NextElement(Gut())
         If LPLSchlecht()\Nummer = LPLGut()\Nummer
            LPLSchlecht()\Anzahl = Schlecht()\Anzahl + 1
         EndIf
    Wend
Wend
Da ist es wieder, nun sogar mit einer Linked List mehr :)
Du hast bisher die LLs Schlecht, Gut, LPLSchlecht und LPLGut und springst bzw. vergleichst wild hin und her ohne ersichtlichen Sinn. Die Positionszeiger in LPLSchlecht und LPLGut werden dabei nicht einmal verändert, befinden sich also stets auf dem zuletzt hinzugefügten Element (angenommen das davor nicht doch irgendwo ein ResetList aufgerufen wurde).

So wird meiner Ansicht nach ein Schuh draus:

Code: Alles auswählen

ResetList(Schlecht())
While NextElement(Schlecht())
    ResetList(Gut())
     While NextElement(Gut())
         If Schlecht()\Nummer = Gut()\Nummer
            Schlecht()\Anzahl = Schlecht()\Anzahl + 1
         EndIf
    Wend
Wend

Verfasst: 04.10.2005 21:59
von Kaeru Gaman
@FD

siehe mein posting...

nur daß ich keinen sinn drin sehe, einen anzahl-counter innerhalb einer der listen zu erhöhen...

außer natürlich, es soll gezählt werden, wie oft das element der ersten in der zweiten vorkommt...
dann müßte es aber gesichert sein, daß es in der ersten genau einmal vorkommt, und das scheint mir nicht gegeben...

deshalb hab ich nen unabhängigen gewählt...

[edit]
achso.. doch.. hab nochmal in dietmars post geschaut...

ok, dann is FDs lösung passend...