剑指Offer——有序链表的合并
来源:互联网 发布:windows 7默认壁纸 编辑:程序博客网 时间:2024/06/03 22:05
题目:将两个递增的单链表合并成一个递增的单链表
可以用递归和循环两种方法实现。
//剑指Offer:两个递增的单链表,合并成一个递增的单链表#include <iostream>using namespace std;struct ListNode{ int val; ListNode *next;};//方法一:递归,另建一个新的链表,存储值ListNode *Merge1(ListNode *phead1,ListNode *phead2){ //鲁棒性检查,防止程序访问到NULL指针,出现崩溃 if(phead1==NULL) return phead2; if(phead2==NULL) return phead1; ListNode *phead; if(phead1->val>phead2->val) { phead=phead2; phead->next=Merge1(phead1,phead2->next); } else { phead=phead1; phead->next=Merge1(phead1->next,phead2); } return phead;}
//方法二:循环法,将链表2插入到链表1中ListNode *Merge2(ListNode *phead1,ListNode *phead2){ ListNode *p,*r,*q,*s; p=phead1; r=p->next; q=phead2->next; s=q->next;//当链表2的节点插入后,保存后继节点。 while(r!=NULL&&q!=NULL) { if(r->val<=q->val) { p=r; r=r->next; }else { q->next=p->next; p->next=q;//将q指向节点插到p p=q; q=s; s=s->next; } } if(r==NULL) p->next=q; return p;}
0 0
- 剑指Offer——有序链表的合并
- 剑指Offer-17-合并有序链表
- 剑指offer----合并两个有序链表
- 《剑指offer》合并两个有序链表
- 剑指offer-合并两个有序链表
- 【剑指offer】合并两个有序的链表
- 3.剑指offer-合并两个有序的链表
- 《剑指offer》合并两个有序的数组
- 剑指offer 面试题17 合并两个有序链表
- 剑指offer(8)-合并两个有序链表
- 剑指Offer---面试题17:合并两个有序链表
- 剑指offer--递归非递归合并两个有序链表
- 剑指offer面试题-合并两个有序链表
- 剑指offer刷题之c++实现的合并两个有序的链表
- 剑指offer系列之15:合并两个有序的链表
- 有序的合并两个有序链表
- 二叉树的镜像 (剑指offer)!!!(两个有序链表的合并,链表的逆置)
- 剑指offer——合并链表
- Android分发机制
- JavaEE的核心技术简介
- 正则表达式详解
- 【笔记】地图数据索引类型
- 107. Binary Tree Level Order Traversal II
- 剑指Offer——有序链表的合并
- ANDROID 使用gradle统一管理第三方APP KEY
- 找工作你需要一个没有广告的网站
- JAVA:三种集合LIST、SET、MAP
- CTS/GTS 测试指引
- viewpager实现轮播图效果
- LeetCode - 234. Palindrome Linked List
- 研发工作中芯片选型需要考虑的问题
- 归并排序