Angella Andrea - Italian Blog

Infinita passione per lo sviluppo software !
posts - 133, comments - 216, trackbacks - 9

My Links

News

MIT OpenCourseWare: I'm invested Wikipedia Affiliate Button


Sto leggendo:

Archives

Post Categories

Siti web realizzati

Siti web tecnici

Algoritmi – N-ultimo elemento di una Single Linked List


Problema:

Considerare una Single Linked List di interi. Scrivere un metodo che ritorna il valore dell’elemento distante nth dall’ultimo elemento. Se non esiste sollevare una eccezione.

Il codice della struttura dati e’ presente in un precedente post.

Input:

Un intero (nht) che rappresenta la distanza dall’ultimo elemento della lista

Output:

Un intero che rappresenta il valore dell’elemento desiderato.

Esempio:

Lista: 5, 7, 2, 4, 3, 9

Input: 0
Output: 9

Input: 1
Output: 3

Input: 5
Output: 5

Input: 6
Output: eccezione

Il mio ragionamento

Scorro la lista utilizzando due puntatori a distanza nth. Quando arrivo in fondo il primo puntatore puntera’ all’elemento desiderato (se la lista e’ sufficientemente lunga).

La mia soluzione

public int GetNthToLastElement(int nth)
{
    if (nth < 0) throw new ArgumentOutOfRangeException("nth");

    Node p = head;
    Node q = null;

    while (p != null)
    {
        if (nth == 0) q = (q == null) ? head : q.Next;
        else --nth;

        p = p.Next;
    }

    if (q == null) throw new ArgumentOutOfRangeException("nth");

    return q.Value;
}

Print | posted on martedì 7 settembre 2010 05:01 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET