C++实现合并两个已经排序的链表
/*
* 合并两个已经排序的链表.cpp
*
* Created on: 2018年4月11日
* Author: soyo
*/
#include<iostream>
using namespace std;
struct Node{
int num;
Node * next;
};
Node * creat(int x)
{
Node *head;
Node *p;
head=new Node;
p=head;
p->num=x;
p->next=NULL;
return head;
}
Node * insert(Node*head,int data)
{
Node *p1,*p;
p1=new Node;
p1->num=data;
p1->next=NULL;
p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=p1;
return head;
}
void printl(Node *head)
{
Node *p=head;
while(p!=NULL)
{
cout<<"数据为:"<<p->num;
p=p->next;
}
cout<<endl;
}
Node *Merge(Node*head1,Node*head2)
{
if(head1==NULL)
return head2;
else if(head2==NULL)
return head1;
Node *newHead=NULL;
if(head1->num<head2->num)
{
newHead=head1;
newHead->next=Merge(head1->next,head2);
}
else
{
newHead=head2;
newHead->next=Merge(head1,head2->next);
}
return newHead;
} int main()
{
Node *head=creat();
// cout<<head->num<<endl;
int i;
int a[]={,,,};
for(i=;i<sizeof(a)/sizeof(int);i++)
{
head=insert(head,a[i]);
}
printl(head);
Node *head2=creat();
int b[]={,,,};
for(i=;i<sizeof(a)/sizeof(int);i++)
{
head2=insert(head2,b[i]);
}
printl(head2);
Node *newMergeHead;
newMergeHead=Merge(head,head2);
printl(newMergeHead);
}
结果:
数据为:1数据为:3数据为:5数据为:7数据为:
数据为:2数据为:4数据为:6数据为:8数据为:
数据为:1数据为:2数据为:3数据为:4数据为:5数据为:6数据为:7数据为:8数据为:9数据为:
C++实现合并两个已经排序的链表的更多相关文章
- 剑指Offer15 合并两个已排序链表
/************************************************************************* > File Name: 15_MergeT ...
- java实现合并两个已经排序的列表
相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃.虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class ...
- 【剑指offer-25】合并两个单调递增的链表,C++实现(链表)
原创博客,转载请注明出处! 1.题目 输入两个单调递增的链表,输出两个链表合成后的链表(单调不减). 2.思路(递归) # 鲁棒性: 如果链表1是空链表,则直接输出链表2. 如果链表2是空链表,则直接 ...
- 合并k个已排序的链表 分类: leetcode 算法 2015-07-09 17:43 3人阅读 评论(0) 收藏
最先想到的是把两个linked lists 合并成一个. 这样从第一个开始一个一个吞并,直到所有list都被合并. class ListNode:# Definition for singly-lin ...
- [Leetcode] Merge k sorted lists 合并k个已排序的链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...
- (剑指Offer)面试题17:合并两个排序的链表
题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然时按照递增排序的. 链表结点定义如下: struct ListNode{ int val; ListNode* next; }; 思 ...
- 剑指Offer面试题:16.合并两个排序的链表
PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ” 一.题目:合并两个排序的链表 题目:输入两 ...
- P114、面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增顺序的.struct ListNode{ int m_nKey; ListNode* m_p ...
- 【剑指Offer学习】【面试题17 ::合并两个排序的链表】
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是依照递增排序的 链表结点定义例如以下: public static class ListNode { int value; List ...
随机推荐
- JS实现根据密码长度 显示安全条
原文:http://www.open-open.com/code/view/1431324883763 //根据密码长度显示安全条 <ul class="clear"> ...
- 全卷积网络FCN详解
http://www.cnblogs.com/gujianhan/p/6030639.html CNN能够对图片进行分类,可是怎么样才能识别图片中特定部分的物体? (图像语义分割) FCN(Fully ...
- sklearn 特征选择
1.移除低方差的特征(Removing features with low variance) VarianceThreshold 是特征选择中的一项基本方法.它会移除所有方差不满足阈值的特征.默认设 ...
- insserv: warning: script 'lampp' missing LSB tags and overrides
https://ubuntuforums.org/showthread.php?t=2327011 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚 ...
- [WASM Rust] Create and Publish a NPM Package Containing Rust Generated WebAssembly using wasm-pack
wasm-pack is a tool that seeks to be a one-stop shop for building and working with Rust generated We ...
- Unity3d中制作异步Loading进度条所遇到的问题
背景 通常游戏的主场景包括的资源较多,这会导致载入场景的时间较长.为了避免这个问题,能够首先载入Loading场景.然后再通过Loading场景来载入主场景. 由于Loading场景包括的资源较少,所 ...
- weex 项目开发(四)项目框架搭建 及 自定义 TabBar 组件
1.安装 路由模块 及 状态管理模块 npm install vue-router --save npm install vuex --save 2.自定义 TabBar 组件 src / ...
- C# Backgroundworker(后台线程)的使用
namespace BackgroundWorkderPauseSample { public partial class MainForm : Form { BackgroundWorker wor ...
- 【转载】一致性哈希算法(consistent hashing)
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单哈 ...
- PHP读取excel(4)
这一小节内容主要是PHPExcel读取少量excel数据,具体代码如下: <?php //数据较少的时候,一次性读取出来放到数组里 header("Content-Type:text/ ...