Avatar billede pede1987 Nybegynder
05. marts 2011 - 16:12 Der er 13 kommentarer og
1 løsning

Hægtede lister

Hej,
Hvordan finder jeg hvert andet element i en hægtede liste, og sletter denne?
Dvs. hvis input er 1, 2, 3 -> 1, 3

På forhånd tak,
Avatar billede pede1987 Nybegynder
05. marts 2011 - 16:13 #1
Hov.. Jeg skriver dette i Java
Avatar billede arne_v Ekspert
05. marts 2011 - 16:20 #2
Du har spurgt i Java kategorien, så vi er klar over at det er Java.

Grundliggende sletter du vel dem du skal slette??

Uanset om du bruger den indbyggede LinkedList eller en egen implementation, så skal du:
- vide hvordan du sletter fra listen
- vælge dem der skal slettes

Ved de sidste skal du naturligvis huske at tage højde for at elementerne rykker sig hvis du sletter forfra.
Avatar billede pede1987 Nybegynder
05. marts 2011 - 18:01 #3
Og den del er jeg så godt klar over. Mit spørgsmål er jo, hvordan jeg få dette gjort?

Altså, hvordan kan jeg sikre, kun at tage hvert anden? Tænker at "%" nok ikke kan bruges i denne sammenhæng. Så er der en, som vil hjælpe lidt med _hvordan_ jeg kan skrive dette..?
Avatar billede pede1987 Nybegynder
05. marts 2011 - 18:02 #4
Jeg bruger egen implementation og altså ikke Java's LinkedList
Avatar billede arne_v Ekspert
05. marts 2011 - 18:52 #5
du skipper den første
sletter current
går til næste
sletter current
går til næste
sletter current
går til næste
...

(antager at current efter slet er den som er rykket ned på de slettedes plads)
Avatar billede pede1987 Nybegynder
05. marts 2011 - 19:41 #6
Jep, det kunne være en metode. Jeg er dog ikke så erfaren i hægtede lister, at jeg kan skrive dette om til kode.
Avatar billede arne_v Ekspert
05. marts 2011 - 19:57 #7
Prøv og så post koden når du får fejl.
Avatar billede pede1987 Nybegynder
05. marts 2011 - 20:17 #8
Det ville så være:

public void halfList(Node x) {
  if (x == null) {
    return -1;
  }
  if (x.next.next != null) {
      x.next = x.next.next;
      halfList(x.next.next);
  }
}
Avatar billede pede1987 Nybegynder
05. marts 2011 - 20:18 #9
hov skal ik return -1, da jeg tænker metoden er void
Avatar billede arne_v Ekspert
06. marts 2011 - 03:40 #10
Og virker den?
Avatar billede pede1987 Nybegynder
06. marts 2011 - 11:07 #11
Nej. Går fejl i sidste linje haltList(x.next.next)
Avatar billede arne_v Ekspert
06. marts 2011 - 15:57 #12
NullPointerException?
Avatar billede pede1987 Nybegynder
06. marts 2011 - 16:06 #13
Men denne kode:
public Node halfList(Node x) {
          if (x == null) {
            return x;
          }
          if (x.next != null) {
              x.next = x.next.next;
              halfList(x.next);
          }
          return x;
        }
få jeg de ulige pladser og ik de lige, som ønskes.

Problemet er, at jeg i føste tilfælde skal have first til at pointe på x.next, og derefter så skal x.next = x.next.next - ville jeg mene
Avatar billede pede1987 Nybegynder
10. marts 2011 - 19:32 #14
l
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