剑指offer 合并两个排序的链表
2016-03-13 10:07
393 查看
题目描述:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
(hint: 请务必使用链表。)
思路:首先新建一个链表,因为连个链表都是有序的,所以只需要在一个链表的基础上添加另一个的元素即可。
具体做法:维护链表内的一个指针,当要插入第二个链表的元素时,这个指针从头遍历链表,当当前节点大于等于要插入的元素时,将其插入到这个节点的前部,保存指针指向新插入的节点。
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
(hint: 请务必使用链表。)
思路:首先新建一个链表,因为连个链表都是有序的,所以只需要在一个链表的基础上添加另一个的元素即可。
具体做法:维护链表内的一个指针,当要插入第二个链表的元素时,这个指针从头遍历链表,当当前节点大于等于要插入的元素时,将其插入到这个节点的前部,保存指针指向新插入的节点。
#include <cstdio> using namespace std; typedef struct Node{ int val; Node *next; Node(int val = -1) : val(val), next(NULL) {} } *pNode; class List{ private: pNode Head; pNode Tail; pNode curNode; public: void Push_Back(int); void Insert_Node(int); void Traverse(); void Delete_List(); List(); ~List(); }; void List::Push_Back(int x){ this->Tail->next = new Node(x); this->Tail = this->Tail->next; } void List::Insert_Node(int x){ while(this->curNode->next){ if(this->curNode->next->val >= x){ pNode node = new Node(x); node->next = this->curNode->next; this->curNode->next = node; return; } else this->curNode = this->curNode->next; } this->curNode->next = new Node(x); this->curNode = this->curNode->next; } void List::Traverse(){ pNode p = this->Head->next; if(p == NULL){ printf("NULL"); return; } while(p){ printf("%d", p->val); p = p->next; if(p) printf(" "); } } List::List(){ Head = Tail = curNode = new Node(); } void List::Delete_List(){ pNode fa = this->Head; pNode ch = fa->next; while(ch){ delete fa; fa = ch; ch = ch->next; } delete fa; } List::~List(){ Delete_List(); } int main() { int n, m; int x; while(scanf("%d%d", &n, &m) != EOF){ List *list = new List(); for(int i = 0; i < n; i++){ scanf("%d", &x); list->Push_Back(x); } for(int i = 0; i < m; i++){ scanf("%d", &x); list->Insert_Node(x); } list->Traverse(); printf("\n"); delete list; } return 0; }
相关文章推荐
- JS 获取浏览器、屏幕和可视区域宽高
- JavaScript模拟鼠标事件
- js checkbox获取选中的值
- 过滤器-监听器
- 深入JSP
- git postBuffer
- 手动处理datanode磁盘间使用不均的问题
- web前端之button和submit的区别
- JSP的内置对象有哪些,作用是什么,方法有哪些
- JSP导出Excel文件
- leetcode@ [116/117] Populating Next Right Pointers in Each Node I & II (Tree, BFS)
- Jquery Ajax 跨域之JSONP方式极简示例,服务端是.net的ashx
- Javascript 属性高级写法
- 10011---Bootstrap CSS
- CSS 常用命名
- javascript权威指南学习笔记1
- css3动画,阴影,加快页面加载,块级模式的小总结
- python web框架企业实战详解(第六期)\第三课时-ajax&jquery&webpy
- python web框架企业实战详解(第六期)\第三课时-css&bootstrap
- JS关键字详解