C++程序 打印链表倒数第N个节点
给定一个链表和一个数n,编写一个函数,返回链表倒数第n个节点的值。
例如,如果输入如下列表和n = 3,则输出为“B”
方法1(使用链表长度):
- 计算链表的长度。将长度记为len。
- 打印链表开头的第(len – n + 1)个节点。
双指针概念: 第一个指针用于存储变量的地址,第二个指针用于存储第一个指针的地址。如果我们希望通过函数改变变量的值,就把指针传递给它。如果我们希望改变指针的值(即它应该开始指向其他东西),我们就传递指向指针的指针。
以下是上述方法的实现:
输出:
时间复杂度: O(n),其中n为链表长度。
空间复杂度: O(1),因为使用常量空间进行指针操作。
方法2(使用两个指针):
维护两个指针——参考指针和主指针。将参考指针和主指针都初始化为头部。首先,将参考指针移动到距离头部n个节点。现在一次移动两个指针,直到参考指针到达末尾。现在主指针将指向倒数第n个节点。返回主指针。
以下是上述方法的实现:
以下是上述方法的演示:
以下是上述方法的实现:
输出
时间复杂度: O(n),其中n为链表长度。
空间复杂度 :O(1),因为使用常量空间。