July 30, 2003
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!!
July 30, 2003
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);
}
}
January 15, 2004
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.
January 15, 2004
ophe wrote: Problemet är att jag inte är så säker på Java så att jag kan göra det vidare bra...
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.
1 Guest(s)