链表面试题积累(反转合并链表)

作者: 沧州宁少 | 来源:发表于2017-11-28 16:27 被阅读0次

链表面试题积累

输入一个带头结点的链表。反转链表并返回头节点

  • 注意边界条件控制
  • 编码之前注意分析需求的内容。不要边写边思考
      struct ListNode {

        int m_nKey;
        ListNode*m_pNext;
      };

     // 输入一个带头结点的链表。反转链表并返回头节点
     ListNode*reverseListNode(ListNode*pHeader){

      /**
       *  1. 边界条件控制
       *  
          2. 用一个指针记录当前节点,然后分别2个指针记录前后节点
       */
     if (pHeader == nullptr) {
        return nullptr;
      }
      ListNode*pReverseNode = nullptr;
      ListNode*pNode = pHeader;
      ListNode*pPreNode = nullptr;

      while (pNode != nullptr) {
   
       ListNode*pNext = pNode->m_pNext;
       if (pNext == nullptr) {
           pReverseNode = pNode;
       }
       pNode->m_pNext = pPreNode;
       pPreNode = pNode;
       pNode = pNext;
     }
       return pReverseNode;
    }

// 2个有序的链表合并 然后生成一个新的有序的链表

  • 如果有一个链表为空则返回另外一个链表
  • 如果两个链表均为空则返回空
  • 比较两个链表的头节点。拿比较小的ListNode当做大链表中下一个节点。
      ListNode*merge(ListNode*pHeader1,ListNode*pHeader2){
     // 边界条件思考。如果pHeader1为空或者pHeader2为空
       if (pHeader1 == nullptr) {
          return pHeader2;
       }else if(pHeader2 == nullptr){
          return pHeader1;
       }
       ListNode*mergeNode = nullptr;
       if  (pHeader1->m_nKey<pHeader2->m_nKey) {
       
         mergeNode = pHeader1;
         
         mergeNode->m_pNext = merge(pHeader1->m_pNext, pHeader2);
         
       }else{
       
        mergeNode = pHeader2;
        mergeNode->m_pNext = merge(pHeader1, pHeader2->m_pNext);
       }
       return mergeNode;
      }

相关文章

  • 链表面试题积累(反转合并链表)

    链表面试题积累 输入一个带头结点的链表。反转链表并返回头节点 注意边界条件控制 编码之前注意分析需求的内容。不要边...

  • 剑指offer 15~17

    15.反转链表输入一个链表,反转链表后,输出链表的所有元素。 16.合并两个排序的链表输入两个单调递增的链表,输出...

  • 反转链表

    《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。 思路:反转链表就是将链表中每一个节点的...

  • 1.数据结构-链表问题

    链表相关问题 删除节点 链表去重 有环链表 反转链表 链表排序 链表相交 其他问题 面试题 02.03. 删除中间...

  • 链表相关算法 - go语言实现

    链表结构 反转链表 (移除节点)删除链表中等于给定值 val 的所有节点 合并两个有序链表 链表成环检测 删除链表...

  • 链表类算法题汇总

    算法题目中常考察的链表操作无非以下几种: 链表反转 链表合并 寻找链表中点 寻找链表倒数第 K 个节点 删除链表节...

  • 算法 - 链表实现(OC) 及简单的链表算法

    链表实现 打印链表 链表反转 (使用递归法) 两个有序链表合并为一个有序链表 力扣题[https://leetco...

  • 数据结构面试题

    1.链表的合并反转等操作?

  • 链表

    链表 单链表反转链表中环的检测两个有序链表合并删除链表倒数第n个节点求链表的元素总个数 一.单向链表 链表共有特征...

  • 常见算法总结

    链表 单链表反转链表中环的检测两个有序的链表合并删除链表倒数第 n 个结点求链表中间第n个节点

网友评论

    本文标题:链表面试题积累(反转合并链表)

    本文链接:https://www.haomeiwen.com/subject/redebxtx.html