剑指offer 66题 -- 输入一个链表,输出该链表中倒数第k个结点。

和自甴很熟 提交于 2020-03-03 17:18:38

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
  //变量定义区
  ListNode* pNode = pListHead;
  ListNode* pPrevious = pListHead;

  //入参检查
  if(pListHead == NULL || k ==0)
    return NULL;

  //先移动k个节点
  for(unsigned int i=0; i < k-1; i++)
  {
    if(pNode->next == NULL )
      return NULL;
  
    pNode = pNode->next;
  }

  //前后节点整体移动
  while(pNode->next != NULL)
  {
    pNode = pNode->next;
    pPrevious = pPrevious->next;
  }

  return pPrevious;
}
};

 

程序已通过牛客网测试用例。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!