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

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

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

来源: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
  • asp之家 软件编程 m.aspxhome.com