ÏÈÒ»´Î±éÀúÕÒµ½ÕâÁ½¸öÔªËØcurr1ºÍcurr2£¬Í¬Ê±´æ´¢ÕâÁ½¸öÔªËØµÄǰÇýÔªËØpre1ºÍpre2¡£
È»ºó´ó»»Ñª
public static Link SwitchPoints(Link head, Link p, Link q)
{
if (p == head || q == head)
throw new Exception(¡°No exchange with head¡±);
if (p == q)
return head;
//find p and q in the link
Link curr = head;
Link curr1 = p;
Link curr2 = q;
Link pre1 = null;
Link pre2 = null;
int count = 0;
while (curr != null)
{
if (curr.Next == p)
{
pre1 = curr;
count++;
if (count == 2)
break;
}
else if (curr.Next == q)
{
pre2 = curr;
count++;
if (count == 2)
break;
}
curr = curr.Next;
}
curr = curr1.Next;
pre1.Next = curr2;
curr1.Next = curr2.Next;
pre2.Next = curr1;
curr2.Next = curr;
return head;
}
×¢ÒâÌØÀý£¬Èç¹ûÏàÍ¬ÔªËØ£¬¾ÍûÓбØÒª½»»»£»Èç¹ûÓÐÒ»¸öÊDZíÍ·£¬¾Í²»½»»»¡£