使用两个指针it1和it2,初始相差it1指向第一个结点,it2与it1相差n个结点,然后同时1后移,直到it2到NULL,则it1即为倒数第n个结点。
#include <iostream>
#include <forward_list> //单向链表,没有指向最后一个元素的指针
using namespace std;
int main(int argc, char** argv)
{
//返回倒数第n=2个迭代器的元素
int n = 2;
forward_list<int> l = { 1,2,3,4 };
forward_list<int>::iterator it1 = l.begin(), it2 = it1;
while (n--)
{
it2++; //it2与it1相差n个位置
}
while (it2 != l.end())
{
it2++;
it1++;
}
cout << *it1 << endl;
return 0;
}
网友评论