/*
烟台大学计算机学院
文件名称:xm.cpp
作者:于琛
完成日期:2017年9月24日
问题描述:连接两个链表
输入描述:无
输出描述:L1,L2链接后的链表元素的值
用到了前面项目设计的算法库lish.h
*/
#include <stdio.h>
#include "../list.h"//用到了前面项目设计的算法库lish.h
void Link(Linklist *&L1,Linklist *&L2)
{
Linklist *p,*q;//p,q分别记录L1,L2->next
p=L1->next;
q=L2->next;
L2->next=NULL;
while(p->next!=NULL)//遍历L1到最后
{
p=p->next;
}
p->next=q;//L1的尾结点的next指针赋值为L2的首结点
free(L2);
}//算法复杂度为O(m),只需要由L1的头节点找到其尾节点即可,与L1的长度相关,与L2的长度n无关
int main()
{
Linklist *A, *B;
int i;
ElemType a[]= {1,2,3,4};
ElemType b[]= {5,6,7,8,9,10};
initList(A);//初始化A
for(i=3; i>=0; i--)
ListInsert(A, 1, a[i]);//插入建立A
initList(B);//初始化B
for(i=5; i>=0; i--)
ListInsert(B, 1, b[i]);//插入建立B
Link(A, B);//链接A与B
printf("A:");
DispList(A);//输出A
DestroyList(A);//销毁A
return 0;
}
算法复杂度为O(m),只需要由L1的头节点找到其尾节点,与L1的长度m相关,与L2的长度n无关
运行结果:
学习心得:
学会了如何连接两个单链表