• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++实现接两个链表实例代码

C++实现接两个链表实例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了用c++实现单链表,c++创建单链表,链表c++,c++链表的创建,c++链表类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 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;   
} 
</div>

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++实现打印两个有序链表公共部分的方法
  • C++实现单链表删除倒数第k个节点的方法
  • C++实现单链表按k值重新排序的方法
  • 用C++类实现单向链表的增删查和反转操作方法
  • C++实现接两个链表实例代码
  • 如何用C++实现双向循环链表
  • 用C++实现单向循环链表的解决方法

相关文章

  • 2017-08-27ZOJ 3329 One Person Game (期望DP)
  • 2017-05-28c++ dynamic_cast与static_cast使用方法示例
  • 2017-05-28C++深度优先搜索的实现方法
  • 2017-05-28C++ explicit关键字的应用方法详细讲解
  • 2017-05-28异步http listener 完全并发处理惩罚http恳求的小例子
  • 2017-05-28用C语言的泛型实现交换两个变量值
  • 2017-05-28C++获得文件状态信息的方法
  • 2017-05-28while和for可以相互转换的例子分享
  • 2017-05-28MFC命名规则汇总
  • 2017-05-28简单比较C语言中的execl()函数与execlp()函数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#委托所蕴含的函数指针概念详细解析
    • VC++ 中ListCtrl经验总结
    • c++中vector&lt;int&gt;和vector&lt;int*&gt;的用法区别
    • win32下进程间通信(共享内存)实例分析
    • C语言将数组中元素的数排序输出的相关问题解决
    • C语言代码中的空白符
    • 浅析Linux下精确控制时间的函数
    • C 字符串数组排序的小例子
    • C++中重载、重写(覆盖)和隐藏的区别实例分析
    • C++中拷贝构造函数的总结详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有