本文主要是介绍第十三题(输出该链表中倒数第k 个结点),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第13 题:题目:输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
思路:设置两个节点pFront和pBack,初始位置相同,都为起始位置头结点处,然后先使pBack前进k个节点(若链表中节点个数少于k直接返回NULL),然后使pBack和pFront前进相同的距离直到pFront到达尾节点,此时pBack的位置就是链表中的倒数第k个节点。
代码:
namespace MS100P_13
{struct ListNode{int m_nKey;ListNode* m_pNext;};ListNode* lastKNode(ListNode* head,int k){ListNode* pFront, *pBack;pBack = pFront = head;for (int i = 0; i < k; i++){if (pFront->m_pNext == NULL)return NULL;pFront = pFront->m_pNext;}while (pFront->m_pNext != NULL) //尾节点为为最后一个非NULL节点{pFront != pFront->m_pNext;pBack = pBack->m_pNext;}return pBack;}
}
这篇关于第十三题(输出该链表中倒数第k 个结点)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!