Länkad lista i Java|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Länkad lista i Java
ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
1
November 16, 2004 - 4:16 pm
sp_Permalink sp_Print

Hej!
Sitter och försöker få en länkad lista att fungera utan att använda mig av den inbyggda listan som redan finns. Det funkar dock inte alls!
Min tanke är att jag ska ha ett huvudprogram app.java som i prinicp använder sig av kommandon som insert. Själva listan och alla funktioner i den (add, reverse (första elementet blir sista elemented, näst första blir det nest sista)) hade jag tänkt skulle ligga i list.java.

Har suttit och klurat ett bra tag, hor dock ej lyckats få ihop det!!

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
774397
November 16, 2004 - 6:07 pm
sp_Permalink sp_Print

Hur långt har du kommit?

ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
774422
November 16, 2004 - 6:20 pm
sp_Permalink sp_Print

Jag har skrivit ihop en del kod, men jag lyckas inte få in ngn info i mitt prog

ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
774427
November 16, 2004 - 6:23 pm
sp_Permalink sp_Print

app.java
-------------------
import java.io.*;
import java.lang.*;
import java.text.*;
import java.util.*;

public class app {

public static void main(String [] args){

ListIter list = new ListIter();
list.add("one");
list.add("two");
list.add("three");

list.print();

}

}

----------------
import java.io.*;
import java.lang.*;
import java.text.*;
import java.util.*;

public class ListIter{

private class ListNode{
ListNode next=null;
String data=null;
}

ListNode list = new ListNode();

public void add(String addStr){

if (list.data==null){
list.data=addStr;
}
else {
ListNode tempList = new ListNode();
tempList=list;
list.next=tempList;
list.data=addStr;
}
}

public void print(){
System.out.println("------------------");
System.out.println(list.data);
}
}

ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
774429
November 16, 2004 - 6:24 pm
sp_Permalink sp_Print

Jag har inte kunnat få ihop nån printfunktion, främst för att jag inte får inmatningen att fungera.
Mitt kodexempel verkar generera an lista med "three three" i

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
774523
November 16, 2004 - 7:52 pm
sp_Permalink sp_Print

Din add är knasig.

Om du ska kolla om du har ett element i listan kolla inte om dess data är null. Det är nämligen tämligen fult.

Ta sedan fram papper och penna, skriv upp list och templist någonstans på pappret. Rita ut objektet som list referar till och dra en pil mellan list och objektet för att markera referensen.
Gå igenom add metoden, rita ut nya objekt då dessa skapa med new och se hela tiden till att ha referenserna uppdaterade.

ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
774527
November 16, 2004 - 7:59 pm
sp_Permalink sp_Print

Uhm??
Jag är inte riktigt med!!

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
774653
November 16, 2004 - 9:49 pm
sp_Permalink sp_Print

Kör programmet i skallen på dig själv.
Använd papper och penna för att hålla reda på hur de olika instanserna av objekten refereras.

ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
774665
November 16, 2004 - 10:03 pm
sp_Permalink sp_Print

Problemet är att jag inte är så säker på Java så att jag kan göra det vidare bra... cry

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
775267
November 17, 2004 - 3:31 pm
sp_Permalink sp_Print

ophe wrote: Problemet är att jag inte är så säker på Java så att jag kan göra det vidare bra... cry

OK, håll ihatten för nu kör vi.

1. Använd Code taggarna när du lägger in kod på forum om sådanna finnes.

2. Jag anser att ListIter är ett kontisgt namn på klassen, det är väl en lista och ingen iterator för en lista?? List hade med andra ord varit vettigare.

3. Klassen borde ha en vettig konstruktor. I den så kan man initiera list till null eftersom listan är tom då vi inte ha några list-noder i den.

4. Lägga till ett nytt element först i listan.

4.1 Skapa en ny nod newNode.


ListNode newNode= new ListNode();
newNode.data = addStr;

4.2 Sätt den temporära nodens nästa ellement att referera till det första i listan


newNode.next = list;

4.3 Uppdatera list referensen så att den refererar till den nya noden


list = newNode;

5. Printmetoden behöver också lite arbete, nu skriver den bara ut första elementet i listan.


public void print(){
System.out.ptintln("---------");
ListNode node = list;
while(node != null){
System.out.println(node.data);
node = node.next;
}
}

metoden använer en variabel list som den sätter till första noden i listan (blir null om det inte finns något).
Så länge som den inte är null så skriver den ut nodens data och flyttar vidare till nästa nod (blir null om det inte finns någon nästa nod).

6. Andra metoder som delete som behövs i en vettig länkad lista är klurigare att implementera då de innehåller flera specialfall.

7. Lycka till.

8. Editerade bort en massa stavfel, om du hittar de återstående får du en guldstjärna.

ophe
Almost a full-blooded keyboard-warrior
Medlem
Forum Posts: 173
Member Since:
July 30, 2003
sp_UserOfflineSmall Offline
775380
November 17, 2004 - 5:15 pm
sp_Permalink sp_Print

Kungligt!! Tack så mycket!!

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 53
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL