Avatar billede trp79 Nybegynder
21. juni 2002 - 12:38 Der er 3 kommentarer og
1 løsning

slette element i liste

Jeg har problemer med en slet_element-metode, der skal kunne slette et enkelt element i listen(dobbelt-hægtet liste). Jeg kan godt få den til at slette et element, men det er bare altid det første element.

Metoderne:

//Inspireret af Nicolais W Asmussens G2-opgave om rapportregistrering fra år 2000
    public boolean sidsteElement()                        //sidste element (ja/nej)
        {
            return aktuelle.naeste==null;
        }

    //Inspireret af Nicolais W Asmussens G2-opgave om rapportregistrering fra år 2000
    public void slet_foerste()                        //slet foerste
        {
            aktuelle = foerste = foerste.naeste;
        }

    //Inspireret af Nicolais W Asmussens G2-opgave om rapportregistrering fra år 2000
    public void slet_aktuelle()                        //slet aktuelle

        {
            if (sidsteElement()==true && foerste.naeste!=aktuelle) //hvis sidste
            {
                aktuelle=forrige;                        //aktuelle en tilbage
                forrige=foerste;                        //forrige til start
                aktuelle.naeste=null;                    //aktuel.naeste peger væk
                while (forrige.naeste != aktuelle)        //forrige løber listen igennem
                    forrige=forrige.naeste;            //til den er før aktuelle
            }
            else if(foerste.naeste!=aktuelle || (foerste.naeste==aktuelle && sidsteElement()==false))//ikke sidst ikke først
            {
                aktuelle = aktuelle.naeste;                //aktuelle 1 frem
                forrige.naeste = aktuelle;                //forrige.naeste = ny aktuelle
            }
            else if(foerste.naeste==aktuelle && sidsteElement()==true)    //hvis 2 rapporter & nr 2 ud
            {
                aktuelle=foerste;                    //aktuelle sættes til foerste
                forrige=aktuelle.naeste=null;        //naeste sættes til null
            }
        }
//Inspireret af Nicolais W Asmussens G2-opgave om rapportregistrering fra år 2000
    public listeElement get_forrige()

        {
            return forrige;
        }
public listeElement get_aktuelle()            //Get_aktuelle-metode, der retunerer det aktuelle element pointeren peger på
    //Inspireret af Nicolais W Asmussens G2-opgave om rapportregistrering fra år 2000
    {
        return aktuelle;
    }

MetodeKaldet:

if (match.get_forrige()==null && match.get_aktuelle()!=null)    //første element
                            {
                                match.slet_foerste();                //slet første
                            }
                            else if (match.get_aktuelle()==null)        //hvis tom liste (gør intet)
                            {
                            }
                            else                                        //vilkårlig anden situation
                            {
                                match.slet_aktuelle();                //slet aktuelle

                            }

Avatar billede disky Nybegynder
21. juni 2002 - 14:13 #1
hvorfor bruger du ikke den indbyggede i Java ?

hvis element er inde i kæden, få foregåendes next pointer til at pege på næste, få næstes previous pointer til at pege på den foregående.
Slet derefter objekt

'pointer' er selvfølgelig en reference
Avatar billede trp79 Nybegynder
21. juni 2002 - 14:26 #2
Kan jeg ikke benytte den kode jeg har nu? Det virker som om, at slet_foerste-metoden bliver kaldt hver gang, ligegyldigt om det er det første element eller ej, der peges på.
Avatar billede cyberzed Nybegynder
24. juni 2002 - 12:54 #3
Hvis du traversere og kigger på din .next vil du kunne slette med current.next == current.next.next;
Avatar billede cyberzed Nybegynder
24. juni 2002 - 13:02 #4
det var selvfølgelig current.next = current.next.next
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester