两个链表合并

Posted dkbob

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个链表合并相关的知识,希望对你有一定的参考价值。

 

两个链表合并的算法

 

//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合并的双向链表。

}

以上是关于两个链表合并的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer十六之合并两个排序的链表

合并两个有序链表_21

LeetCode JavaScript实现 合并链表 题型汇总

两个排序链表的合并(Easy)

合并两个排序的链表

递归:合并两个有序链表