C++实现接两个链表实例代码
作者:lqh 时间:2023-05-04 01:27:02
C++实现接两个链表实例代码
有以ha为头结点的链表,元素个数为m;以hb为头结点的链表,元素个数为n。现在需要你把这两个链表连接起来,并使时间复杂度最小,请分析并实现。
思路:
很简单的链表操作的题目,逆序头部插入,并将长度较长的一方接到较短的后面,时间复杂度为O(min(m,n)),注意free使用的地点!。
实例代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}Lnode,*LinkList;
//打印
void print(LinkList &head)
{
LinkList plist=head->next;
while(plist!=NULL)
{
cout<<plist->data<<" ";
plist=plist->next;
}
cout<<endl;
}
//逆序输入链表
void CreateList(LinkList &L,int m)
{
LinkList p;
L=(LinkList)malloc(sizeof(Node));
L->next=NULL;
cout<<"逆序输入元素,空格分隔:"<<endl;
for(int i=m;i>0;--i)
{
p=(LinkList)malloc(sizeof(Node));
cin>>p->data;
p->next=L->next;
L->next=p;
}
print(L);
}
//连接链表
void Combine(LinkList &ha,int m,LinkList &hb,int n,LinkList &hc)
{
LinkList selectMin;
hc=(LinkList)malloc(sizeof(Node));
int flag=0;
if(m>n)
{
selectMin=hb;
flag=1; //ha在后面
}
else
selectMin=ha;
while(selectMin->next!=NULL)
selectMin=selectMin->next;
if(flag)
{
selectMin->next=ha->next;
hc=hb;
free(ha);//notice
}
else
{
selectMin->next=hb->next;
hc=ha;
free(hb);
}
cout<<"合并后的链表为:"<<endl;
print(hc);
}
void Destory(LinkList &hc) //仅释放hc即可
{
LinkList temp;
while(hc!=NULL)
{
temp=hc;
hc=hc->next;
free(temp);
}
}
int main()
{
int m,n;
cout<<"请输入以ha为head节点链表的元素个数:"<<endl;
cin>>m;
LinkList ha,hb,hc;
CreateList(ha,m);
cout<<"请输入以hb为head节点链表的元素个数:"<<endl;
cin>>n;
CreateList(hb,n);
Combine(ha,m,hb,n,hc);
Destory(hc);
return 0;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/nk_test/article/details/51056798
标签:C++,链表
0
投稿
猜你喜欢
java中dart类详细讲解
2022-01-23 13:01:13
InterProcessMutex实现zookeeper分布式锁原理
2023-08-11 05:46:43
简介Android 中的AsyncTask
2022-06-14 17:06:57
解决@RequestBody部分属性丢失的问题
2023-08-01 15:00:21
Android编程防止进程被第三方软件杀死的方法
2021-08-01 01:52:46
Spring实现处理跨域请求代码详解
2023-11-25 12:28:34
C#构造函数详解
2023-02-25 22:38:50
Android WebView 不支持 H5 input type="file" 解决方法
2022-08-30 21:07:08
Android对话框使用方法详解
2023-11-09 03:37:51
Log4j新手快速入门教程
2023-06-01 11:59:44
取消Android Studio项目与SVN关联的方法
2022-09-14 11:48:45
springboot配置文件绑定实现解析
2022-06-07 23:32:38
Java编程使用箱式布局管理器示例【基于swing组件】
2022-08-12 14:09:14
Android自定义Camera实现拍照功能
2021-09-22 09:18:58
详解C# Socket简单例子(服务器与客户端通信)
2022-01-02 03:12:49
java 2d画图示例分享(用java画图)
2023-07-25 22:03:52
utf8编码检测方法分享
2023-05-18 12:34:27
解决springcloud 配置gateway 出现错误的问题
2023-12-04 00:45:49
Java实现多线程大批量同步数据(分页)
2021-12-18 17:41:18
spring boot 如何请求后缀匹配
2022-09-24 15:15:41