【链表】合并两个有序链表,合并后链表依旧有序
来源:互联网 发布:台湾旅游软件 编辑:程序博客网 时间:2024/05/16 17:12
链表的结点结构
struct Node{ Node(int value) :_value(value) , _next(NULL) {} int _value; Node* _next;};
问题描述:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然按照递增排序的。
解决问题:
方法一 递归版本
Node* Merge(Node *pHead1, Node* pHead2){ if (pHead1 == NULL) return pHead2; if (pHead2 == NULL) return pHead2; Node *pNewHead = NULL; if (pHead1->_value <= pHead2->_value) { pNewHead = pHead1; pNewHead->_next = Merge(pHead1->_next, pHead2); } else { pNewHead = pHead2; pNewHead->_next = Merge(pHead1, pHead2->_next); } return pNewHead;}
方法二、非递归版本
修改结点next域的指向
Node* Merge1(Node *pHead1,Node* pHead2){ Node *p1 = pHead1; Node *p2 = pHead2; if (p1 == NULL) return p2; if (p2 == NULL) return p1; Node *pNewHead = NULL; Node *pTailNode = NULL; if (p1->_value <= p2->_value) { pNewHead = p1; pTailNode = p1; p1 = p1->_next; } else { pNewHead = p2; pTailNode = p2; p2 = p2->_next; } //修改指针的指向 while (p1 != NULL && p2 != NULL) { if (p1->_value <= p2->_value) { pTailNode->_next = p1; pTailNode = p1; p1 = p1->_next; } else { pTailNode->_next = p2; pTailNode = p2; p2 = p2->_next; } } if (p1 == NULL) pTailNode->_next = p2; else pTailNode->_next = p1; return pNewHead;}
阅读全文
0 0
- 【链表】合并两个有序链表,合并后链表依旧有序
- 链表--合并两个有序链表,合并以后的链表依旧有序。
- 合并两个有序链表,合并以后的链表依旧有序
- 合并两个有序链表,合并以后的链表依旧有序。
- 合并两个有序链表,合并以后的链表依旧有序
- 问题:合并两个有序链表,合并以后的链表依旧有序。
- 合并两个有序单链表,合并后依旧有序
- 有序的合并两个有序链表
- 两个有序链表合并为有序
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 合并两个有序链表
- 两个有序链表合并
- 在ubuntu上安装最新稳定版本的node及npm
- 我的第一个Android things Application
- 运算符汇编解释
- 4.6在工具窗口中添加快捷菜单
- CC264X I2C
- 【链表】合并两个有序链表,合并后链表依旧有序
- C语言之内存四区模型和函数调用模型
- poi读取数据写入excel
- Fragment生命周期
- Android APP优化—Android程序员必须掌握
- ionic应用在mac上使用xcode7.0进行iphone真机调试
- mybatis调用存储过程返回多个结果集
- javascript中attachEvent、addEventListener用法和区别
- 使用多线程和IO流编写文件复制功能类