当前位置:网站首页>ACM. HJ51 输出单向链表中倒数第k个结点 ●
ACM. HJ51 输出单向链表中倒数第k个结点 ●
2022-06-21 19:45:00 【chenyfan_】
HJ51 输出单向链表中倒数第k个结点 ●
描述
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
正常返回倒数第 k 个结点指针,异常返回空指针.
要求:
(1)正序构建链表;
(2)构建后要忘记链表长度。
数据范围:链表长度满足 1 ≤ n ≤ 1000 1 \le n \le 1000 1≤n≤1000, k ≤ n k \le n k≤n,链表中数据满足 0 ≤ v a l ≤ 10000 0 \le val \le 10000 0≤val≤10000
本题有多组样例输入。
输入描述:
输入说明
- 输入链表结点个数
- 输入链表的值
- 输入 k 的值
输出描述:
输出一个整数
示例
输入:
8
1 2 3 4 5 6 7 8
4
输出:
5
题解
1. 快慢指针
多组测试用例时,每次循环内输出 cout 即可。
利用快慢指针进行倒数第 k 个数的判断:
快指针比慢指针快 k 步,当快指针走到 null 节点时,慢指针此时指向倒数第 k 个数。
#include <iostream>
#include <vector>
using namespace std;
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
int main(){
int n, k, num;
while(cin >> n){
// 多组用例的节点数
ListNode* dummyHead = new ListNode(); // 虚拟头结点
ListNode* pre = dummyHead;
for(int i = 0; i < n; ++i){
// 建立单向链表
cin >> num;
ListNode* curr = new ListNode();
pre->m_pNext = curr;
curr->m_nKey = num;
pre = curr;
}
cin >> k;
ListNode *slow = dummyHead->m_pNext; // 快慢指针
ListNode *fast = dummyHead->m_pNext;
if(k == 0){
// 倒数第0个数,剪枝
cout << 0 << endl;
}else{
for(int i = 0; i < k; ++i){
// 快指针比慢指针快k步
fast = fast->m_pNext;
}
while(fast != nullptr){
// 当快指针走到null节点时
slow = slow->m_pNext;
fast = fast->m_pNext;
}
cout << slow->m_nKey << endl; // 输出slow节点
}
}
return 0;
}
边栏推荐
- Cluster 2 - LVS load balancing cluster Dr mode
- 集群一---LVS负载均衡集群NAT模式及LVS负载均衡实战部署
- 启牛开通证券账户是真实安全的吗?开户收费吗
- On the charm of code language
- 2022年最新河南建筑施工电工(建筑特种作业)模拟试题及答案
- 【微服务七】Ribbon负载均衡策略之BestAvailableRule源码深度剖析
- 【物联网开发】正点原子STM32战舰v3+机智云AIoT+APP控制
- Intersection du vecteur et du plan
- 用keil 5编译C51时出现定义未使用的处理方法
- 函数的声明方式
猜你喜欢

Principle and application of user mode hot patch

Que peut faire une ligne de code?

AXI_ Bus_ Matrix_ 4x4 design - logic design

C语言数组与指针练习题(原题+解析+原码)
![[OWT] P2P signaling server running](/img/92/bc2c364523a1bbfa2bb1c742827eec.png)
[OWT] P2P signaling server running

集群二---LVS负载均衡群集DR模式

Product innovation - an innovative social app that returns to real life

PowerPoint tutorial, how to organize slides into groups in PowerPoint?

This real-time monitoring scheme is really excellent!

【CTF】攻防世界 MISC
随机推荐
evaluating expression ‘ew.sqlSegment != null and ew.sqlSegment != ‘‘ and ew. mybaties plus问题
Quels sont les conseils que les programmeurs débutants ne connaissent pas?
How to solve the problem of automatically updating the click times of weaving dream article list
Libtorch video memory management example
Merge two ordered arrays
Basic rules of smiles
拖延患者自救指南|“我有不拖延的100种借口,却不愿意跨出一步”
Principle and application of user mode hot patch
二分图最大权匹配(搭个板子,粘俩题)
Is it true and safe for qiniu to open a securities account? Do you charge for opening an account
Go语言自学系列 | golang标准库encoding/xml
Number of free radical electrons and valence electrons of rdkit | molecule
【MySQL·水滴计划】第三话- SQL的基本概念
AXI_ Bus_ Matrix_ 4x4 design - logic design
Modify the UE4 cache path to relieve the pressure on the C disk
用keil 5编译C51时出现定义未使用的处理方法
有哪些新手程序员不知道的小技巧?
30组户外旅行游玩VLOG记录LUTs调色预设Moody Travel LUTs
ASP.Net Core创建Razor页面上传多个文件(缓冲方式)
有哪些新手程序員不知道的小技巧?