webForumDet fria alternativet

Loopa genom en länkad lista...

15 svar · 464 visningar · startad av Han-Solo

Han-SoloMedlem sedan jan. 2001290 inlägg
#1

Hejsan!

Jag är ny i gemet vad det gäller JAVA...

Jag skulle vilja veta hur jag skriver en for loop som resulterar i följande.

mittobjekt.Next.Sak;
mittobjekt.Next.Next.Sak;
mittobjekt.Next.Next.Next.Sak;
mittobjekt.Next.Next.Next.Next.Sak;
mittobjekt.Next.Next.Next.Next.Next.Sak;

jag kan ju inte vara +".Next" för varje varv...???

hilfe bitte

PeWMedlem sedan juni 200010 432 inlägg
#2
for(list i = first; i.next!=null;i=i.next)
      gör nåt med i.sak;

Men för enkelhetens skull kan man implementera interfacet iterator... och då använda de metoderna.

PeWMedlem sedan juni 200010 432 inlägg
#3

jag kan ju inte vara +".Next" för varje varv...???

Jo, om next är en "pekare" (länk) till nästa element i listan så hamnar man där automagiskt för varje varv genom t.ex i=i.next (ovan exempel)

LimeMedlem sedan sep. 2001961 inlägg
#4

Fast det är osnyggt att ha direktacces till en privat variabel i en klass så PeW's kod ska givetvis se ut såhär:

for(list i = first; i.getNext() != null;i=i.getNext())
    gör nåt med i.sak;

;-)

Kunde inte motstå detta så här på måndagsmorgonen...

/Lime

PeWMedlem sedan juni 200010 432 inlägg
#5

Damn! x( :p

Men betrakta min kod som pseudo så spelar det ingen roll :birp

LimeMedlem sedan sep. 2001961 inlägg
#6

Men betrakta min kod som pseudo så spelar det ingen roll

Jo, jag anser att det spelar roll, framför allt om man skriver kod till en som inte verkar vara så van vid att programmera. Dom har en benägenhet att göra exakt så som man skriver... :-)

Men som jag sa... kunde inte motstå... :birp

/Lime

Han-SoloMedlem sedan jan. 2001290 inlägg
#7

Tackar för omtanken Lime... även om... nåja!

PeWMedlem sedan juni 200010 432 inlägg
#8

Jo, jag anser att det spelar roll, framför allt om man skriver kod till en som inte verkar vara så van vid att programmera.

Jaja... nu var det bara ett påvisande hur algoritmen ser ut och ingen exakt lösning... ;)

for i<-first to next != null THEN
      doSomething i.sak

Bättre så? :p ;) :birp

PeWMedlem sedan juni 200010 432 inlägg
#9

Han-Solo ->

Funkar det inte då? Eller har du nån ren kod att visa upp?

Han-SoloMedlem sedan jan. 2001290 inlägg
#10

Jo jo... jag hajjade galoppen med en gång!! :)

PeWMedlem sedan juni 200010 432 inlägg
#11

Okey :bire

LimeMedlem sedan sep. 2001961 inlägg
#12

Jorå, det kan vara okej bara det funkar.

Det går ju även att köra en Trabant till Kina, men man får stanna en massa och reparera ;-)

/Lime

PeWMedlem sedan juni 200010 432 inlägg
#13

:e

PeWMedlem sedan juni 200010 432 inlägg
#14

Å andra sidan brukar väl listan utgöras av ytterligare en klass med noden som i sig är private men har public variabler. Iteratorn implementeras i listklassen som då har åtkomst till noderna. Men ska man komma åt noderna i en iteration utanför listklassen måste man naturligtvis skapa en metod däri som hämtar nod.next... och när man ändå håller på så drar man naturligtvis till med interfacet Iterator :)

Att både nodklassen och listklassen ska ha private variabler är väl lite väl onödigt. Det bör ju räcka mkt väl med att listklassen har private variabler, endast, när hela nodklassen är private.

Man kommer inte åt noden i vartfall vilket är meningen, juh :)

LimeMedlem sedan sep. 2001961 inlägg
#15

Regel 1: Funkar det? Om "Ja", rör det inte. Om "Nej", gå till fråga Regel 2.

Regel 2: Är det ditt fel att det inte funkar? Om "Ja", gå till Regel 3. Om "Nej", gå till Regel 4.

Regel 3: Fixa det och gå till Regel 1.

Regel 4. Kommer du att få skit för att det inte funkar? Om "Ja" gå till Regel 3. Om "Nej"... Vad är problemet?

Eller nått....

/Lime

PeWMedlem sedan juni 200010 432 inlägg
#16

Weeeeeeee! :birp

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)