i have a very big problem with my read function it has to get constant and exponent values from the user and creates a linked list but this linked list should be sorted the problem occurs when i sort them pls check my code :

Code:
void Poly::read()
{     
    int Constant,Exponent;
    int end = 0;
    int counter = 0;
    List *currentptr,*new_node,*temp;
    
    currentptr = new List;
    currentptr = head;
    
    
    cout<<"\nEnter 0 to constant to exit\n";
    
      
    do 
      {
           cout<<"\nEnter constant:"; 
           cin>>Constant;
	   cout<<"\nEnter exponent:"; 
	   cin>>Exponent;
	   
	   currentptr->set_constant(Constant);
	   currentptr->set_exponent(Exponent);

	   new_node = new List;
	   currentptr->next = new_node;
	   currentptr = currentptr->next;
	   counter++;
      } while(Constant !=0);
	   currentptr = head;
	   
	
        
	           //sorting
		   while(end < counter) 
		   {
			   while(currentptr->next != NULL)
			   {
			      if(currentptr->get_exponent() < currentptr->next->get_exponent())
			      {
				temp = new List;
				temp->set_constant(currentptr->next->get_constant());
				temp->set_exponent(currentptr->next->get_exponent());
				
				currentptr->next->set_exponent(currentptr->get_exponent());
				currentptr->next->set_constant(currentptr->get_constant());
				
				currentptr->set_exponent(temp->get_exponent());
				currentptr->set_constant(temp->get_constant());
				
				delete temp;
							        
			      }
			       end++;
			       currentptr = currentptr->next;
		           }
			   currentptr = head;
		   }