华为机试HJ51:输出单向链表中倒数第k个结点

简介: 华为机试HJ51:输出单向链表中倒数第k个结点

题目描述:

输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。

链表结点定义如下:

struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
};

正常返回倒数第k个结点指针,异常返回空指针

本题有多组样例输入。

输入描述:

输入说明

1 输入链表结点个数

2 输入链表的值

3 输入k的值

输出描述:

输出一个整数

示例:

输入:

8

1 2 3 4 5 6 7 8

4

输出:

5

解题思路:

这道题偷懒可以用vector数组做,非常简单。


采用题目要求的链表来做:定义ListNode的构造函数,输入链表长度;设置好表头,每次输入数值就new一个节点并连接;输入target,即倒数第target个节点,遍历链表number-target次,即可让指针指向目标节点,输出该节点的值即可。

测试代码:

#include <iostream>
#include <vector>
using namespace std;
struct ListNode
{
    int m_nKey;
    ListNode* m_pNext;
    // 构造函数
    ListNode(int x):m_nKey(x),m_pNext(nullptr){};
};
int main()
{
    int number;
    while(cin>>number)
    {
        ListNode* head=new ListNode(-1);
        ListNode* p=head;
        for(int i=0;i<number;++i)
        {
            int t;
            cin>>t;
            ListNode* tp=new ListNode(t);
            tp->m_pNext=nullptr;
            p->m_pNext=tp;
            p=tp;
        }
        int target;
        cin>>target;
        if(target<=0||target>number)
        {
            cout<<0<<endl;
            continue;
        }
        for(int i=0;i<number-target+1;++i)
        {
            head=head->m_pNext;
        }
        cout<<head->m_nKey<<endl;
    }
    return 0;
}


相关文章
|
2月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
79 1
|
1月前
|
存储 算法 搜索推荐
链表的中间结点
【10月更文挑战第24天】链表的中间结点是链表操作中的一个重要概念,通过快慢指针法等方法可以高效地找到它。中间结点在数据分割、平衡检测、算法应用等方面都有着重要的意义。在实际编程中,理解和掌握寻找中间结点的方法对于解决链表相关问题具有重要价值。
23 1
|
2月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
47 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
2月前
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
(剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
56 0
|
2月前
|
算法 Java
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
这篇文章通过单向环形链表的应用实例,详细讲解了约瑟夫环问题的解决方案,并提供了Java代码实现。
29 0
|
2月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
18 0
|
2月前
|
存储 缓存
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)(二)
【初阶数据结构】深入解析单链表:探索底层逻辑(无头单向非循环链表)
|
6月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
6月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
66 2

热门文章

最新文章