华为机试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;
}


相关文章
|
19天前
|
算法
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
21 0
|
8天前
|
存储 算法
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
|
11天前
|
算法
19.删除链表的倒数第N个结点
19.删除链表的倒数第N个结点
|
1天前
|
存储 算法 前端开发
【C/数据结构与算法】:链表的实现(单向链表+双向链表)
【C/数据结构与算法】:链表的实现(单向链表+双向链表)
5 0
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
|
16天前
|
SQL 算法 数据挖掘
力扣题目 19:删除链表的倒数第N个节点 【python】
力扣题目 19:删除链表的倒数第N个节点 【python】
|
19天前
|
算法
数据结构和算法学习记录——线性表之双向链表(下)-头插函数、头删函数、查找函数、pos位置之前插入结点、pos位置删除结点及其复用、销毁链表函数
数据结构和算法学习记录——线性表之双向链表(下)-头插函数、头删函数、查找函数、pos位置之前插入结点、pos位置删除结点及其复用、销毁链表函数
11 0
|
16天前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
16天前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表