getting the sorting function to repeat until sorted
I took some time to try to understand linked list. I split up the functions to do separate things. But now whatever i do, i cannot get m sorting function to sort correctly. can anyone see how to repeat it until its sorted?
Code:
#include <iostream>
using namespace std;
/* Recursive functions
insertion
retrieval
pointer based sorted linked list of integers
also if 0 is entered it keeps inserting until 0 is entered.
*/
struct node
{
int item;
node *next;
};
// takes in the head pointer
// item to be inserted
//building the list here
void insertion(node *&HeadPtr, int NumberToInsert) {
HeadPtr->item=NumberToInsert;
HeadPtr->next=new node;
node *tmp=HeadPtr;
tmp->next=new node;
do {
cout << "Please input the number to insert: 0 to quit ";
cin >> NumberToInsert;
tmp->item=NumberToInsert;
if (tmp->item==0)
{
tmp->next=NULL;
} //end if
else
{
tmp->next=new node;
tmp=tmp->next;
} // end else
}while (NumberToInsert!=0); //end do -while
} //end insertion
int traverser(node *&HeadPtr) {
node *tmp2=HeadPtr;
// traverse the list
while (tmp2!=NULL)
{
cout << tmp2->item << " ";
tmp2=tmp2->next;
} // end while
cout << "\n";
} // end traverser
int sort(node *&HeadPtr)
{
node *tmp=HeadPtr;
node *tmp3=tmp;
int temp;
while (tmp3->item!=0)
{
if (tmp3->item < tmp3->next->item)
{
tmp3=tmp3->next;
}
if (tmp->item = 0) //unsure
{
}
else
{
temp=tmp3->item;
tmp3->item=tmp3->next->item;
tmp3->next->item=temp;
tmp3=tmp3->next;
}
} // end while
} // end sort
int main() {
int number=-1;
node *HeadPtr=new node;
insertion(HeadPtr, number);
traverser(HeadPtr);
sort(HeadPtr);
traverser(HeadPtr);
system("pause");
return 0;
}