2 Algoritmi: poistaKeskimmainen(lista): solmuMaara = 0 solmu = lista.head while solmu != NIL solmuMaara = solmuMaara + 1 solmu = solmu.next if solmuMaara == 1 lista.head = NIL return keskikohta = solmuMaara / 2 solmu = lista.head kohta = 1 while solmu != NIL if kohta == keskikohta solmu.next = solmu.next.next return kohta = kohta + 1 solmu = solmu.next Algoritmissa on kaksi while-silmukkaa, joista ensimmäinen käy läpi kaikki listan solmut ja toinen käy läpi puolet listan solmuista. Niinpä algoritmin aikavaativuus on O(n). Algoritmissa on kiinteä määrä apumuuttujia, joten algoritmin tilavaativuus on O(1). Pisteytys: * Keskimmäisen solmun löytäminen: 2 p * Keskimmäisen solmun poistaminen: 2 p * Aikavaativuus ja tilavaativuus: 2 p Selvästi yleisin virhe oli, että algoritmi ei ottanut huomioon tapausta, jossa listassa on vain yksi solmu.