Gå til innhold

Problem med sortert listestruktur


Anbefalte innlegg

Hei!

 

Har et lite problem med sortert listestruktur:

 

abstract class LinkedList{
Link første;
Link siste;
int lengde;

   protected class Link{
       Link neste;
       Link før;
       Object o;

       void settInnHerEllerFør(Link l){
           // Tall over 1 sier at l skal være sortert før this
           int test = ((Ord)o).compareTo(l.getObject());

           if(test > 0 && this != første) {
               if(før!=null) før.settInnHerEllerFør(l);

           } else if(this == første && test > 0) {
               setFør(l);
               l.setNeste(this);
               første = l;

           } else if(this == siste && test <= 0) {
               l.setFør(this);
               setNeste(l);
               siste = l;

           } else if(test <= 0) {
               l.setFør(this);
               if (neste != null) {
                   neste.setFør(l);
                   l.setNeste(neste);
               }
               setNeste(l);
           }
        }
   }
}

class OrderedLinkedList extends LinkedList {
int nr = 0;

public void add(Object o){
   Link l = new Link(o);
   if (nr == 0) {
       lengde = 0;
       første = l;
       siste = l;
       nr++;
    } else {
       siste.settInnHerEllerFør(l);
    }
    lengde++;
}
}

 

Når jeg kjører igjennom testprogrammet til denne, så virker det som det går bra en stund, men plutselig flommer det over med feilmeldinger

...

at IfiLinkedList$Link.settInnHerEllerF°r(IfiCollection.java:132)

at IfiLinkedList$Link.settInnHerEllerF°r(IfiCollection.java:132)

at IfiLinkedList$Link.settInnHerEllerF°r(IfiCollection.java:132)

...

 

Får ikke sett hva som står øverst, rekker ikke få nå pause i kjøringen.

 

Noen som ser noe galt med metoden settInnHerEllerFør i Link?

Endret av oya
Lenke til kommentar
Videoannonse
Annonse

Vanskelig å si når vi ikke vet hva som er på linje 132, men hva tenker du på med dette?

          if(test > 0 && this != første) {
              if(før!=null) før.settInnHerEllerFør(l);

          } 

Kan denne resultere i en uendelig løkke?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...