void merge(LNode *A, LNode *B, LNode *&C) // *&C是新链表
{
//待对比的指针 *p, *q
LNode *p = A->next;
LNode *q = B->next;
LNode *s;
//只要其中一个头节点,然后将另外的释放
C = A;
C->next = NULL;
free (B);
while(p != NULL && q != NULL)
{
if(p->data <= q->data)
{
s = p; p = p->next;
s->next = C->next; C->next = s;
}
else
{
//改为头插法
s = q; q = q->next;
s->next = C->next; C->next = s;
}
}
if(p != NULL)
{
s = p;
p = p->next;
s->next = C->next;
C->next = s;
}
if(q != NULL)
{
s = q;
q = q->next;
s->next = C-next;
C->next = s;
}
}
相关文章
- 02-01头插法和尾插法实现链表逆序
- 02-01建立双链表(头插法)
- 02-01C语言链表头插法逆向输出
- 02-01建立单链表(头插法)
- 02-01关于线性表中单链表的头插法和尾插法的实现方式
- 02-01链表归并(头插法)
- 02-01头插法建立链表
- 02-01数据结构C++,线性表的头插法、尾插法建立链表
- 02-0114.带头结点单链表头插法逆序输出
- 02-01链表必学算法(三):归并法