All pastes #331136 Raw Edit

Untitled

public text v1 · immutable
#331136 ·published 2007-01-28 16:18 UTC
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;