2628 ElementPtr *ElementLeftOfCol1, *ElementLeftOfCol2;
2629 ElementPtr ElementRightOfCol1, ElementRightOfCol2;
2634 ElementLeftOfCol1 = &(Matrix->
FirstInRow[Row]);
2635 pElement = *ElementLeftOfCol1;
2636 while (pElement->
Col < Col1)
2637 { ElementLeftOfCol1 = &(pElement->
NextInRow);
2638 pElement = *ElementLeftOfCol1;
2640 if (Element1 !=
NULL)
2641 { ElementRightOfCol1 = Element1->
NextInRow;
2642 if (Element2 ==
NULL)
2645 if ( ElementRightOfCol1 !=
NULL AND ElementRightOfCol1->
Col < Col2 )
2648 *ElementLeftOfCol1 = ElementRightOfCol1;
2651 pElement = ElementRightOfCol1;
2653 { ElementLeftOfCol2 = &(pElement->
NextInRow);
2654 pElement = *ElementLeftOfCol2;
2655 }
while (pElement !=
NULL AND pElement->
Col < Col2);
2658 *ElementLeftOfCol2 = Element1;
2660 *ElementLeftOfCol1 =ElementRightOfCol1;
2662 Element1->
Col = Col2;
2667 if ( ElementRightOfCol1->
Col == Col2)
2672 *ElementLeftOfCol1 = Element2;
2677 pElement = ElementRightOfCol1;
2679 { ElementLeftOfCol2 = &(pElement->
NextInRow);
2680 pElement = *ElementLeftOfCol2;
2681 }
while (pElement->
Col < Col2);
2683 ElementRightOfCol2 = Element2->
NextInRow;
2686 *ElementLeftOfCol1 = Element2;
2687 Element2->
NextInRow = ElementRightOfCol1;
2688 *ElementLeftOfCol2 = Element1;
2689 Element1->
NextInRow = ElementRightOfCol2;
2691 Element1->
Col = Col2;
2692 Element2->
Col = Col1;
2701 if (ElementRightOfCol1->
Col != Col2)
2703 { ElementLeftOfCol2 = &(pElement->
NextInRow);
2704 pElement = *ElementLeftOfCol2;
2705 }
while (pElement->
Col < Col2);
2707 ElementRightOfCol2 = Element2->
NextInRow;
2710 *ElementLeftOfCol2 = Element2->
NextInRow;
2711 *ElementLeftOfCol1 = Element2;
2712 Element2->
NextInRow = ElementRightOfCol1;
2714 Element2->
Col = Col1;
ArrayOfElementPtrs FirstInRow
register ElementPtr pElement
struct MatrixElement * NextInRow