rendered paste body int nodenum,current=minind,test=1;
mat.data[minind].prev=&start;
mat.data[minind].next=&finish;
mat.begin=minind;
mat.end=minind;
for (nodenum=0;nodenum<mat.points;nodenum++)
{
if (nodenum==minind)
nodenum++;
if (nodenum==mat.points)
break;
test=1;
while (test)
{
//if goes at start
if (mat.data[mat.begin].prev == &start && (mat.data[mat.begin].row > mat.data[nodenum].row || (mat.data[mat.begin].row == mat.data[nodenum].row && mat.data[mat.begin].col > mat.data[nodenum].col)))
{
mat.data[mat.begin].prev=&mat.data[nodenum];
mat.data[nodenum].prev=&start;
mat.data[nodenum].next=&mat.data[mat.begin];
mat.begin=nodenum;
test=0;
current=mat.data[nodenum].index;
break;
}
//if goes at end
else if ((mat.data[mat.end].next == &finish) && ((mat.data[mat.end].row < mat.data[nodenum].row) || (mat.data[mat.end].row == mat.data[nodenum].row && mat.data[mat.end].col < mat.data[nodenum].col)))
{
mat.data[current].next=&mat.data[nodenum];
mat.data[nodenum].next=&finish;
mat.data[nodenum].prev=&mat.data[mat.end];
mat.end=nodenum;
test=0;
current=mat.data[nodenum].index;
break;
}
//if between current and current next
else if (((mat.data[current].row < mat.data[nodenum].row) ||(mat.data[current].row == mat.data[nodenum].row && mat.data[current].col < mat.data[nodenum].col))&&((*mat.data[current].next).row > mat.data[nodenum].row) || ((*mat.data[current].next).row==mat.data[nodenum].row && (*mat.data[current].next).col >=mat.data[nodenum].col))
{
mat.data[nodenum].prev=&mat.data[current];
mat.data[nodenum].next=mat.data[current].next;
(*mat.data[current].next).prev=&mat.data[nodenum];
mat.data[current].next=&mat.data[nodenum];
test=0;
current=mat.data[nodenum].index;
break;
}
//if after
else if ((mat.data[current].row < mat.data[nodenum].row) || (mat.data[current].row == mat.data[nodenum].row && mat.data[current].col < mat.data[nodenum].col))
{
current=(*mat.data[current].next).index;
}
//if goes before
else if ((mat.data[current].row > mat.data[nodenum].row) || (mat.data[current].row == mat.data[nodenum].row && mat.data[current].col > mat.data[nodenum].col))
{
current=(*mat.data[current].prev).index;
}
else if ((mat.data[current].row == mat.data[nodenum].row) && (mat.data[current].col == mat.data[nodenum].col))
{
//prtinf("Error - same co ords %i %i entered twice",mat.data[current].row,mat.data[current].col);
}
}
}
return 0;