i have a linked list and for some reason the following 2 fucntions work fine
Code:
void NodeList::printList()
{
    StudentNode* walk = first;
    int num = 0;
    if(listSize()> 0)
    {
        while(walk != NULL)
        {
            num++;
            cout<<"["<<num<<"] "<<walk->thisStudent<<endl;
            walk = walk->next;
        }
    }
    else
    {
        cout<<"The list is Empty";
    }
}

void NodeList::printListReverse()
{
    StudentNode* walk = last;
    int num = 0;
    if(listSize()> 0)
    {
        while(walk != NULL)
        {
            num++;
            cout<<"["<<num<<"] "<<walk->thisStudent<<endl;
            walk = walk->prev;
        }
    }
    else
    {
        cout<<"The list is Empty";
    }
}
Command 11 : PRINT_LIST
[1] xavior, GPA = 4.90, JagID = J00000001
[2] willy, GPA = 3.55, JagID = J00084689
[3] jill, GPA = 3.24, JagID = J00003512
[4] ben, GPA = 4.00, JagID = J00024040
[5] timmy, GPA = 1.00, JagID = J00418564


Command 12 : PRINT_LIST_REVERSE
[1] timmy, GPA = 1.00, JagID = J00418564
[2] bigelow, GPA = 4.00, JagID = J00024040
[3] jill, GPA = 3.24, JagID = J00003512
[4] willy, GPA = 3.55, JagID = J00084689
[5] xavior, GPA = 4.90, JagID = J00000001

but when i print reading my indexes i get this stuff:


the code for each index is:
Code:
void NodeList::printListName()
{
    indexName();
    StudentNode* walk = firstName;
    int num = 0;
    if(listSize()> 0)
    {
        while(walk != NULL)
        {
            num++;
            cout<<"["<<num<<"] "<<walk->thisStudent<<endl;
            walk = walk->nextName;
        }
    }
    else
    {
        cout<<"The list is Empty";
    }
}

void NodeList::indexName()
{
    StudentNode* walk = first;
    StudentNode* walkName = NULL;
    StudentNode* newguy = NULL;
    StudentNode* temp = NULL;
    
    while(firstName != NULL)
    {
        temp = firstName;
        firstName = firstName->next;
        temp->nextName = NULL;
    }
    lastName = firstName = NULL;
    
       
    while(walk != NULL)
    {
        walkName=firstName;
        newguy = walk;
        
        if(firstName == NULL)
        {
            firstName = newguy;
            lastName = newguy;
            newguy->nextName = NULL;
        }
        else if (newguy->thisStudent.name <= firstName->thisStudent.name)
        {
            newguy->nextName = firstName;
            firstName = newguy;
        }
        else if (newguy->thisStudent.name > lastName->thisStudent.name)
        {
            lastName->nextName = newguy;
            lastName = newguy;
            lastName->nextName = NULL;
        }
        else
        {
            while(newguy->thisStudent.name > walkName->nextName->thisStudent.name)
            {
                walkName = walkName->nextName;
            }
            newguy->nextName = walk->nextName;
            walk->nextName = newguy;
        }
        walk = walk->next;
    }
}
prints out :

Command 13 : PRINT_LIST_NAME
[1] ben, GPA = 4.00, JagID = J00024040
[2] jill, GPA = 3.24, JagID = J00003512
[3] willy, GPA = 3.55, JagID = J00084689
[4] xavior, GPA = 4.90, JagID = J00000001

Code:
void NodeList::printListGPA()
{
    indexGPA();
    StudentNode* walk = firstGPA;
    int num = 0;
    if(listSize()> 0)
    {
        while(walk != NULL)
        {
            num++;
            cout<<"["<<num<<"] "<<walk->thisStudent<<endl;
            walk = walk->nextGPA;
        }
    }
    else
    {
        cout<<"The list is Empty";
    }
}

void NodeList::indexGPA()
{
    StudentNode* walk = first;
    StudentNode* walkGPA = NULL;
    StudentNode* newguy = NULL;
    StudentNode* temp = NULL;
    
    while(firstGPA != NULL)
    {
        temp = firstGPA;
        firstGPA = firstGPA->next;
        temp->nextGPA = NULL;
    }
    lastGPA = firstGPA = NULL;
    
       
    while(walk != NULL)
    {
        walkGPA=firstGPA;
        newguy = walk;
        
        if(firstGPA == NULL)
        {
            firstGPA = newguy;
            lastGPA = newguy;
            newguy->nextGPA = NULL;
        }
        else if (newguy->thisStudent.gpa <= firstGPA->thisStudent.gpa)
        {
            newguy->nextGPA = firstGPA;
            firstGPA = newguy;
        }
        else if (newguy->thisStudent.gpa > lastGPA->thisStudent.gpa)
        {
            lastGPA->nextGPA = newguy;
            lastGPA = newguy;
            lastGPA->nextGPA = NULL;
        }
        else
        {
            while(newguy->thisStudent.gpa > walkGPA->nextGPA->thisStudent.gpa)
            {
                walkGPA = walkGPA->nextGPA;
            }
            newguy->nextGPA = walk->nextGPA;
            walk->nextGPA = newguy;
        }
        walk = walk->next;
    }

}
prints out:
Command 14 : PRINT_LIST_GPA
[1] timmy, GPA = 1.00, JagID = J00418564
[2] jill, GPA = 3.24, JagID = J00003512
[3] willy, GPA = 3.55, JagID = J00084689
[4] xavior, GPA = 4.90, JagID = J00000001

Code:
void NodeList::printListJAG()
{
    indexJAG();
    StudentNode* walk = firstJAG;
    int num = 0;
    if(listSize()> 0)
    {
        while(walk != NULL)
        {
            num++;
            cout<<"["<<num<<"] "<<walk->thisStudent<<endl;
            walk = walk->nextJAG;
        }
    }
    else
    {
        cout<<"The list is Empty";
    }
}

void NodeList::indexJAG()
{
    StudentNode* walk = first;
    StudentNode* walkJAG = NULL;
    StudentNode* newguy = NULL;
    StudentNode* temp = NULL;
    
    while(firstJAG != NULL)
    {
        temp = firstJAG;
        firstJAG = firstJAG->next;
        temp->nextJAG = NULL;
    }
    lastJAG = firstJAG = NULL;
    
       
    while(walk != NULL)
    {
        walkJAG=firstJAG;
        newguy = walk;
        
        if(firstJAG == NULL)
        {
            firstJAG = newguy;
            lastJAG = newguy;
            newguy->nextJAG = NULL;
        }
        else if (newguy->thisStudent.jagID <= firstJAG->thisStudent.jagID)
        {
            newguy->nextJAG = firstJAG;
            firstJAG = newguy;
        }
        else if (newguy->thisStudent.jagID > lastJAG->thisStudent.jagID)
        {
            lastJAG->nextJAG = newguy;
            lastJAG = newguy;
            lastJAG->nextJAG = NULL;
        }
        else
        {
            while(newguy->thisStudent.jagID > walkJAG->nextJAG->thisStudent.jagID)
            {
                walkJAG = walkJAG->nextJAG;
            }
            newguy->nextJAG = walk->nextJAG;
            walk->nextJAG = newguy;
        }
        walk = walk->next;
    }
}
prints out:
Command 15 : PRINT_LIST_JAG
[1] xavior, GPA = 4.90, JagID = J00000001
[2] willy, GPA = 3.55, JagID = J00084689
[3] timmy, GPA = 1.00, JagID = J00418564


i could under stand if they all printed out the same number of items. but im baffled that one list would print out all but 2 when i did a block copy and changed variables.