打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
程序员面试金典2.2 链表中倒数第k个结点

题目描述

输入一个链表,输出该链表中倒数第k个结点。


class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead==NULL||k==0)
            return NULL;
        ListNode*pTail=pListHead,*pHead=pListHead;
//链表指针,pHead,pTail。 pHead先走k-1步,然后,pHead和pTail同时后移,
//等走到链表末尾时,pTail的位置就是倒数第k个节点。
        for(int i=1;i<k;++i)
        {
            if(pHead->next!=NULL)
                pHead=pHead->next;
            else
                return NULL;
        }
        while(pHead->next!=NULL)
        {
            pHead=pHead->next;
            pTail=pTail->next;
        }
        return pTail;
    }
};



使用Stack,将结点压入栈中,再取出第k个就好
if(head == null || k ==0 ){
            return null;
        }
         
        //可以先把链表反转,然后找出第k个
        Stack<ListNode> stack = new Stack<ListNode>();
        int count = 0;
        while(head != null){
            stack.push(head);
            head = head.next;
            count++;
        }
         
        if(count < k){
            return null;
        }
         
        ListNode knode = null;
        for(int i = 0; i < k; i++){
            knode = stack.pop();
        }
         
         
        return knode;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
删除链表中重复的结点
算法45(在O(1)时间内删除链表结点)
剑指offer(C++)-JZ23:链表中环的入口结点(数据结构-链表)
两个链表的第一个公共结点
链表算法面试问题?看我就够了!
UC头条:<数据结构> 链表
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服