旋风

Communication comes from our hears and heads! my msn:youpeizun@hotmail.com


导航

void merge(slnodetype *headA,slnodestype *headB)
{
  slnodetype *tempA ,*tempB,*temp;
  tempA=headA;
  tempB=headB;
  //循环每个A中元素,把比A中元素小的B中元素放在其前面
  while(tempA->next!=headA)
  {
   temp=tempA;

    //循环B中元素,把比A中元素小的B中元素放在A元素的前面
   while(tempA->next->data>tempB->next->data)
   {
     temp->next=tempB->next;
     tempB->next->next=tempA->next;
     temp=tempB-next;
   //下个B中元素;
     tempB=tempB->next;
     if(tempB->next==headB && tempA-next==headA)
     {
      //当到了A或B中的尾部时,组合完成,释放B的头结点
      free(headB)
      return;
     }
   }
    //下个A中元素
   tempA=temp->next;
  
  }
   //寻找B的尾部元素
  while(tempB->next!=headB)
  {
   tempB=tempB->next;
  }
  //把B尾部元素接在A的前面,释放B的头结点,组合完成
  tempB->next=headA;
  free(headB);

}

typedef struct slnode
{
Elemtype data;
struct slnode *next;

}slnodetype;

/*觉得一个好的算法对提高程序的性能非常重要;初次接触请多多指教*/