剑指offer:链表中倒数第k个结点
题目描述:
输入一个链表,输出该链表中倒数第k个结点。
解题思路:
扫描一遍链表,利用栈存每一个结点,则出栈的顺序就是反向的链表输出,对应出栈操作k次的栈顶即为所求。
注意:当链表为空,k为0以及k大于链表长度时,输出空指针。
代码:
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { stack<ListNode*> s; ListNode *cur = pListHead; if(pListHead==nullptr || k==0) return nullptr; while(cur!=nullptr) { s.push(cur); cur = cur->next; } int list_size = s.size(); if(k>list_size) return nullptr; for(int i=0; i<k; i++) { cur = s.top(); s.pop(); } return cur; } };