【剑指Offer面试编程题】题目1519:合并两个排序的链表--九度OJ
2024-09-05 22:08:10
- 题目描述:
-
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
(hint: 请务必使用链表。)
- 输入:
-
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和m(0<=n<=1000, 0<=m<=1000):n代表将要输入的第一个链表的元素的个数,m代表将要输入的第二个链表的元素的个数。
下面一行包括n个数t(1<=t<=1000000):代表链表一中的元素。接下来一行包含m个元素,s(1<=t<=1000000)。
- 输出:
-
对应每个测试案例,
若有结果,输出相应的链表。否则,输出NULL。
样例输入:
5 2
1 3 5 7 9
2 4
0 0
样例输出:
1 2 3 4 5 7 9
NULL
【解题思路】本题应该是非常经典题目了,当然链表数据结构的实现也算是一个考点。主题思路当然将两个链表输入然后,利用两个指针分别指向两个链表表头,一次比较两个指针的值,谁小谁前进,直达有指针到达链表的尾部停止比较。将剩余的值依次链入目标链表中,完成链表的合并。
本题中还是利用了stl中list实现,没有去实现链表的数据结构。效果其他应该是一致的。
AC code:
#include <cstdio>
#include <list>
using namespace std; int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
if(n==0 && k==0)
printf("NULL\n");
else
{
list<int> lst1,lst2,lst3;
int tt;
for(int i=0;i<n;++i)
{
scanf("%d",&tt);
lst1.push_back(tt);
}
for(int i=0;i<k;++i)
{
scanf("%d",&tt);
lst2.push_back(tt);
}
list<int>::iterator it1=lst1.begin(),it2=lst2.begin();
while(it1!=lst1.end() || it2!=lst2.end())
{
if(it1==lst1.end())
lst3.push_back(*it2++);
else if(it2==lst2.end())
lst3.push_back(*it1++);
else
{
if(*it1<*it2)
lst3.push_back(*it1++);
else
lst3.push_back(*it2++);
}
}
for(list<int>::iterator it=lst3.begin();it!=lst3.end();++it)
{
if(it!=lst3.begin())
printf(" ");
printf("%d",*it);
} printf("\n");
}
}
return 0;
}
/**************************************************************
Problem: 1519
User: huo_yao
Language: C++
Result: Accepted
Time:280 ms
Memory:1024 kb
****************************************************************/
题目链接:http://ac.jobdu.com/problem.php?pid=1519
九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299
最新文章
- ELF Format 笔记(一)—— 概述
- Mysqldump源码分析
- 关于Linux下C编译错误(警告)cast from &#39;void*&#39; to &#39;int&#39; loses precision
- ServletContext(重要)
- 树莓派+qt+opencv
- 【HMTL】文字飞舞的美
- bzoj1072
- iOS9 未受信任的企业级开发者
- 从用python做zoj1011发生Non-zero Exit Code错误说起
- 展开被 SpringBoot 玩的日子 《 六 》 整合 Mybatis
- Docker Swarm 负载均衡详解 or 模式选择
- OpenCV与QT联合开发示例
- JavaScript按日期排序之灵活排序
- QT-1-环境搭建QT5.4.1&;MinGW4.9.1
- Tp5.1使用导出Excel
- Linux学习笔记-基本操作3
- Fit项目分页组件的编写
- MVC的简单分页【转】
- AndroidManifest.xml文件安全探索
- 模拟登陆CSDN——就是这么简单
热门文章
- 定义列表dl中标签 dt 与标签dd对齐方法,标签ul与标签li对齐
- windows server 2016系统安装
- python基础(二)---第一个程序
- webjars使用
- Python:函数基础
- POJ3662 Telephone Lines (dijkstra+二分)
- component:(resolve) =>; require
- 基于Facebook开源框架SocketRocket的即时通讯
- 我的B站主页:https://space.bilibili.com/611212 内有视频题解
- Django 学习之Rest Framework 视图集与Routers与扩展功能