01. marts 2002 - 23:16Der er
15 kommentarer og 1 løsning
dobbel-thægtede lister (pointere)
Jeg må i en opgave ikke bruge javas egne listeklasser. Derfor skal jeg have lavet følgende dobbelt-hægtet:
public void indsaet(Film vv) { listeElement ny= new listeElement(vv); if (first==null || alfabetiskFoer(ny.v, first.v)) { ny.next= first; first= ny; } else { listeElement temp= first; while (temp.next!=null && !alfabetiskFoer(ny.v, temp.next.v))
temp= temp.next; ny.next= temp.next; temp.next= ny; ny.prev=temp; } } Men jeg mangler at sørge for det element der er større's tilbage-pointer... who to do that..?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Rettelse: når jeg sætter et element ind imellem to andre elementer (et der er mindre og et der er større), mangler jeg at sørge for det element der er større's tilbage-pointer.
Javel, så men det er jo ikke kun der, at der er problemer med indsættelse mellem elementer. Det er faktisk et helt andet sted. Prøv at tegne "pointerne" når du finder den rigtige plads i din while-løkke.
Ærgeligt du ikke vil se mit takkebrev, men her er det da alligevel: Det er jeg da godt nok meget ked af. Beklager at jeg er ny herinde og at jeg ikke har rutinen. Det må du sørme undskylde mester. Det er da dejligt at få sådan en modtagelse og så positive svar. Sætter pris på du gav mig så meget snor, det var stort og rigtigt smukt af dig.
public void indsaet(Film vv) { listeElement ny= new listeElement(vv); if (first==null || alfabetiskFoer(ny.v, first.v)) { // indsætter element forrest i listen. se note nedenfor. if ( first != null ) first.prev = ny; // indsat linie her ny.prev = null; // indsat linie her ny.next = first; first = ny; } else { // indsætter element der ikke er forrest i listen listeElement temp = first; while (temp.next!=null && !alfabetiskFoer(ny.v, temp.next.v)) temp = temp.next; if ( temp.next != null ) temp.next.prev = ny; // indsat linie her ny.prev = temp; ny.next = temp.next; temp.next = ny; } }
Som regel vil man lave et 'rod' element til at være 'altid det første' i listen, dvs det har en v værdi der er garantere lavere end noget brugerne kan risikeres at komme med. På den måde kan man slippe for at skulle lave en 'special case' for indsætning forrest i listen.
Endelig en venlig sjæl... Tak for hjælpen og ikke mindst hintet om rod-værdien :o) Den køber jeg....
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.