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;
/*觉得一个好的算法对提高程序的性能非常重要;初次接触请多多指教*/