Como você insere em uma lista vinculada ordenada? [duplicado]

Duplicata Possível:
LinkedList "nó salto"

Eu só preciso ter uma lista vinculada em ordem pelo nome. Eu só posso chegar até 1º, 3º, 5º .. nós. Eu não consigo pensar tão longe. Eu quero ser um programador C ++, mas se eu não consigo entender isso é a sua esperança? Recipientes STLstd::lists não são uma opção para mim neste momento como estudante. O que você vê na função de lista é o que estou tentando entender.

list::node::node(const winery &winery) : item( winery.getName(), winery.getLocation(),
    winery.getAcres(), winery.getRating() ), nextByName( NULL ), nextByRating( NULL )
{

}

void list::insert(const winery& winery)
{
    node *current_node  = new node( winery ); // but came here and did this so it has new info!
    node *next_node     = NULL;
    node *tail_node     = current_node;

    if ( headByName == NULL ) // then we are here for the first item
    {       
        headByName   = current_node; // the list ptrs will have the first node's address. 
        headByRating = current_node; 
    }
    while ( headByName->nextByName != NULL )
    {
        headByName->nextByName = tail_node;
        tail_node = next_node;
        //next_node = current_node;
    }
    tail_node = new node( winery ); 
    headByName->nextByName = tail_node;
}

E os ponteiros que estão disponíveis para mim:

struct node
{
    winery  item;
    node *  nextByName;
    node *  nextByRating;
};

class list
{
    ...
private:
    node * headByName;
    node * headByRating;
};

questionAnswers(4)

yourAnswerToTheQuestion