两个链表一升一降,合并为一个升序链表。
2013-03-30 20:07
471 查看
#include <iostream> using namespace std; class List { public: List(int num) { this->num = num; next = NULL; } int num; List* next; }; //创建链表 void createList(List* &list) { List* cur; int input; cout<<"输入链表的元素值,以-9999结束"<<endl; cin>>input; list = new List(input); cur = list; cin>>input; while(input != -9999) { cur->next = new List(input); cur = cur->next; cin>>input; } } //遍历 void travelList(List* list) { List* cur = list; while(cur != NULL) { cout<<cur->num<<endl; cur = cur->next; } } //逆置 List* reverseList(List* list) { List* pre = NULL; List* cur = list; List* temp; while(cur != NULL) { temp = cur; cur = cur->next; temp->next = pre; pre = temp; } return pre; } List* merge(List* list1,List* list2){ List* l1 = list1; List* l2 = reverseList(list2); List* ret; if(l1->num < l2->num) { ret = l1; l1 = l1->next; } List* list = ret; while(l1 && l2) { if(l1->num < l2->num) { list->next = l1; l1 = l1->next; } else { list->next = l2; l2 = l2->next; } list=list->next; } if(!l1) list->next = l2; else if(!l2) list->next = l1; return ret; } int main(){ List *l1,*l2; createList(l1); createList(l2); List* ret = merge(l1,l2); travelList(ret); return 0; }
相关文章推荐
- 合并两个链表成一个升序链表
- 将两个升序排列的单链表合并为一个降序排列的单链表且不增加新的结点
- 合并两个链表成一个升序链表
- 两个升序链表,合并成一个升序链表
- 数据结构 - 有两个链表,第一个升序,第二个降序,合并为一个升序链表(C++)
- 将两个有序链表合并成一个有序链表
- 将两个非递减的有序链表合并为一个非递增的有序链表
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
- 合并两个递增链表为一个递增链表
- 两个有序链表合并为一个有序链表
- 两个有序链表求差集,合并为一个有序链表
- 将两个有序链表合并成一个有序链表
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,要求用递归方法进行。
- Java将两个有序链表合并为一个有序链表、将两个有序数组合并成一个有序数组
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。使用非递归方法以及递归方法。
- 3.两个有序单链表合并为一个有序的单链表
- [LeetCode]Merge Two Sorted Lists & Remove Duplicates from Sorted List 两个有序链表合并为一个&删除链表重复元素
- 将两个递增的有序链表合并为一个递增的有序链表
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- 将两个带头节点链表单链表,合并成一个新的带头节点链表……