两个链表合并的算法
//1 单链表的合并
typedef struct list
{
int age;
Linklist next;
}sqlist ,*Linklist
1:首先来讲单链表是什么,单链表的节点只含有指向下一个节点的指针,尾节点的指针为NULL
Linklist connect(Linklist L1,Linklist L2)
{
p3=L2;
p->next=L1;//p为L2的尾部节点
return p3; //p3为L1L2合并的链表
}
//2 循环链表的合并
typedef struct list
{
int age;
Linklist next;
}sqlist ,*Linklist
1:首先来讲循环链表是什么意思,即链表的尾指针指向她的头结点,构成循环。
Linklist connect(Linklist TA,Linklist TB)////先找到L1 L2的尾节点TA,TB再传入函数形参
//L1插到L2的后面
{
p3=TB->next; //p指向L2的头节点
TB->next=TA->next->next; //L2的头节点指向L1的首元节点。
delete TA->next; //删除L1的头节点
TA->next=p3; //L1的尾节点的指针域指向L2的头节点
return p3; //p3为L1L2合并的循环链表。
}
//3 双向链表的合并
typedef struct list
{
int age;
Linklist next;
Linklist prior;
}sqlist ,*Linklist
1.首先来讲什么是双向链表,即一个节点含有指向上一个节点的指针,也有指向下一个节点的指针,头节点指向前部的指针为NULL,尾节点指向的为NULL。
Linklist connect(Linklist L1,Linklist L2)//L1,L2都为非空链表。
//L1插入L2的尾部。
{
p3=L2;
p1//L1的头节点
p2//L2的尾节点
p2->next=p1;//L2的尾节点后指针域指向L1的头节点
p1->prior=p2;//L1的头节点的前指针域指向L2;
return p3;//p3为L1 L2合并的双向链表。
}