只爱洗碗 2021-11-11 20:36 采纳率: 89.5%
浏览 132
已结题

输出单向链表中倒数第k个结点

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

链表结点定义如下:

struct ListNode

{

int m_nKey;

ListNode* m_pNext;

};

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

数据范围:链表长度满足 , ,链表中数据满足

本题有多组样例输入。

img

  • 写回答

1条回答 默认 最新

  • 从善若水 5G/6G通信领域优质创作者 2021-11-11 20:36
    关注
    
    //调试时,显示数组越界等问题,原因是该题倒数第0个结点比较扯,给出结果为0,题意并未提示 
    #include<iostream>
    using namespace std;
    struct ListNode{
        int val;
        ListNode* next;
        ListNode(int x) : val(x), next(NULL){}
    };
    int main(){
        int nums;
        while(cin >> nums){
            ListNode *pHead = new ListNode(-1);
            ListNode *p = pHead;
            for(int i = 0; i < nums; ++i){
                int data;
                cin >> data;
                ListNode *q = new ListNode(data);
                p->next = q;
                p = p->next;
            }
            int Kth;
            cin >> Kth;
            p = pHead;
            if(Kth == 0)  // 边界测试
                cout << "0" << endl;
            else if(nums-Kth >= 0){
                for(int i = 0; i <= nums-Kth; ++i)
                    p = p->next;
                cout << p->val << endl; 
            }
            else
                cout << "NULL" << endl; 
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月11日

悬赏问题

  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO
  • ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
  • ¥20 关于 openpyxl 处理excel文件地问题