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

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



Seneste spørgsmål Seneste aktivitet
I går 20:46 opkaldside Af hagbartm i Mobiltelefoner
I går 16:05 win 10 vil ikke boote Af bb69 i Windows
I går 11:20 Lenovo x390 Af tobberjas i PC
I går 10:14 Alder i Excel Af Nanarsi i Excel
I går 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel