顺序合并两个非有序的链表(C++且不用链表实现)
2020-02-05 11:55
197 查看
题目要求:
给定由整数组成的两个无序数组,根据顺序合并成一个数组。
输入包括两行,每行由若干个由->分隔的整数组成,分别表示以最左整数为链表头,单向指向右侧节点的链表,每行输入均以 .结尾。
输出为合并后的单向链表,由->表示其间的指针,最终指向由NULL表示的空值。
在合并过程中,比较两个链表当前待合并的第一个元素,选择其中较小的那个元素放入合并后的数组。
输入格式
输入两行字符串,每行字符串由 有符号整数、->和.组成。
输出格式
输出一行字符串,表示合并后的数组。
样例输入复制
1->2->3.
1->0->2.
样例输出复制
1->1->0->2->2->3->NULL
程序代码:
#include <iostream> using namespace std; int main(){ int y=2,i,j,a[100],b[100],c[200];char str1,str2,str3,str4; while(y--) //输入的样例 { if(y==1) //第一个样例输入 { for( i=0;str1!='.';i++)//用a[100]数组存贮第一个样例的数字 { cin>>a[i]>>str1; if(str1=='.') break; else cin>>str2; } } else //第二个样例输入 { for( j=0;str3!= '.';j++)//用b[100]数组存贮第二个样例的数字 { cin>>b[j]>>str3; if(str3=='.') break; else cin>>str4; } } } int n=0,m=0,k=0,flag1=0,flag2=0; while(1)//循环比较a[100]和b[100]组数中相应次序的大小,最后用c[200]数组存贮 { if(a[n]<=b[m]&&flag1==0) { c[k]=a[n]; n++; k++; if(n>i) flag1=1; } else { if(flag2==0) { c[k]=b[m]; m++; k++; } if(m>j) flag2=1; } if(flag1==1&&flag2==1) break; } for(int p=0;p<k;p++)//输出c[200]中的数字 { if(p!=k-1) cout<<c[p]<<"-"<<">"; else cout<<c[p]<<"->NULL"; } }
总结:本人是用C++写的不用链表代码,结果也正确,因本人编程习惯和水平的限制,不习惯用链表。不过网上也有用Java的String类来操作链表串也比较简单,发这个的目的是供C++不用链表写的作为参考。
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- 剑指offer刷题之c++实现的合并两个有序的链表
- C++实现两个有序链表合并(17)---《那些奇怪的算法》
- LeetCode合并两个有序链表C++b版
- C++实现两个有序数组的合并
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- Java实现两个有序的单项链表的合并
- [算法Rust,Go,Python,JS实现)]LeetCode之21-合并两个有序链表
- 剑指offer第十六题【合并两个排序的链表】c++实现
- Java实现两个有序链表的合并
- C++实现打印两个有序链表公共部分的方法
- 17_7_13:合并两个有序链表。实现1+2+3+...+n,不使用常规方法
- 《剑指offer》面试题25:合并两个排序的链表(C++实现)
- 面试题17:合并两个有序链表,递归和非递归实现
- LeetCode21.python实现: 合并两个有序链表问题☆
- C++实现:合并两个有序的数组,合并后的数组依然有序
- 【leetcode】合并两个有序链表(python实现)
- 九度1519题 合并两个有序链表java实现,(也是剑指offer中的题)
- 【C++】合并两个排序的链表,要求合并后仍然是有序的
- C++实现合并两个排序的链表
- 递归实现合并两个有序链表