美文网首页
面试常考的链表操作

面试常考的链表操作

作者: 翼动晴空 | 来源:发表于2017-05-03 11:00 被阅读103次

1、链表的结构

typedef int Data; 
struct ListNode {
     Date data;
     ListNode *pNext;
};

2、链表的逆序

ListNode *reverseList(ListNode *pHead)
{
     ListNode *pReversedHead = NULL;
     ListNode *pNode = pHead;
     ListNode *pPrev = NULL;
 
     while (pNode != NULL) {
         ListNode *pNext = pNode->pNext;
         if (pNext == NULL) 
             pReversedHead = pNode;
  
         pNode->pNext = pPrev;
         pPrev = pNode;
         pNode = pNext; 
     }
     return pReversedHead; 
}

3、找出倒数第k个

ListNode* findKthToTail(ListNode* pListHead, unsigned int k)
{
     if (pListHead == NULL || k == 0)
          return NULL;
  
     ListNode *pAhead = pListHead;
     ListNode *pBehind = NULL;
 
     for (unsigned int i = 0; i < k - 1; i++) {
          if (pAhead->pNext != NULL)
               pAhead = pAhead->pNext;
          else 
               return NULL;
     }
 
     pBehind = pListHead;
     while (pAhead->pNext != NULL) {
          pAhead = pAhead->pNext;
          pBehind = pBehind->pNext
     }
     return pBehind;
}

4、找出中间元素

 ListNode *getMiddleNode(ListNode *pNode)
{
     ListNode *firstNode = pNode;
     ListNode *backNode = pNode;
 
     while (firstNode != NULL) {
          firstNode = firstNode->pNext->pNext;
          backNode = backNode->pNext;
     }
     return backNode;
}

5、判断链表是否有环

 bool judgeListCricle(ListNode *pNode)
{
     if (pNode == NULL)
          return false;
 
     ListNode *first = pNode;
     ListNode *back = pNode;
 
     while(firt->pNext!=NULL && back->pNext->pNext!=NULL) {
          first = first->pNext;
          back = back->pNext->pNext;
          if (first == back)
               return ture;
     }
     return false;
}

相关文章

  • 面试常考的链表操作

    1、链表的结构 2、链表的逆序 3、找出倒数第k个 4、找出中间元素 5、判断链表是否有环

  • 数据结构--链表

    面试C++常考的问题:链表和数组有什么区别呢? 1、链表是链式存储结构,数组是顺序存储结构。2、链表通过指针连接元...

  • 有关链表的小技巧,我都给你总结好了

    链表 链表是数据结构里一个很基础但是又很爱考的线性结构,链表的操作相对来说比较简单,但是非常适合考察面试者写代码的...

  • 链表与二叉树

    1. 链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,...

  • 数据结构与算法总结

    1. 链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,...

  • 🔥 面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代

    链表 链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合...

  • 链表 java实现

    链表java实现:因为面试/考试真的很喜欢考链表!!! 题目一:从尾到头打印链表思路:利用stack【判断栈是否为...

  • 单链表的就地逆置--java实现(含头节点和不包含头节点)

    前沿:链表是面试中经常问道的知识点,比如链表反转,就地反转,判断单链表是否相交,判断链表是否有环等都是常问的问题....

  • 链表算法面试问题看我就够了!(转载)

    1 引言 单链表的操作算法是笔试面试中较为常见的题目。本文将着重介绍平时面试中常见的关于链表的应用题目。 本文大概...

  • 单向链表及面试题大全

    链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写...

网友评论

      本文标题:面试常考的链表操作

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