求链表倒数第k个结点
生活随笔
收集整理的这篇文章主要介绍了
求链表倒数第k个结点
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目:输入一个单向链表(只有指向下一个结点指针),输出链表中的倒数第k个结点。
分析:
1. 一个单向链表只有指向下一个结点的指针,所以我们无法得到前面一个结点的指针,所以不能通过最朴素的枚举法来求出。
2. 现在要求出倒数第k个结点。现在用一个指针枚举是无法求出,但是我们可以使用两个指针法(非常重要)。
初始化设置两个指针p1和p2,p1和p2都指向链表的头结点。我们可以先让指针p1指针先走到第k个结点,下一步开始两个指针p1和p2一起走,当p1指向链表最后一个结点的时候p2指向即为倒数第k个结点。
为什么呢这个方法是正确的?
当p1指向第k个结点的时候,p2和p1相差k个结点,所以当p1指向尾结点的时候,p2指向的即为倒数第k个结点。
代码:
[cpp] view plaincopy
总结
以上是生活随笔为你收集整理的求链表倒数第k个结点的全部内容,希望文章能够帮你解决所遇到的问题。