リストの最後から二番目のk個のノードを印刷

本方法は、第1の位置に前進ステップk、遅いポインタの指を行くために、高速の手を両手を使用することで、ポインタが素早く遅い終了位置、ポインタの位置に行ったとき、彼らは、同時に前進しますこれは、k番目のノードの逆数です。

 

//最後から二番目のリストノードK
の#include <iostreamの>
する#include <リスト>
使用して名前空間STD。

int型the_k_back_node(リスト<整数> LIST1、INT K)
{
    IF((!list1.empty())&&(k <= list1.size())&&(K> 0))
    {
        オートit_fast = list1.begin() ;
        自動it_slow = list1.begin()。
        一方、(k--)
        {
            ++ it_fast。
        }
        ながら(!it_fast = list1.end())
        {
            ++ it_fast。
            ++ it_slow;
        }
        * it_slowを返します。
    }
    NULLを返します。
}


INTのmain()
{
    int型K。
    cinを>> K;
    リスト<整数>リスト1。
    以下のために(INT I 0 =; I <= 10; I ++)
    {
        list1.push_back(I)。
    }
    COUT << the_k_back_node(LIST1、K)<< ENDL。
    システム(「一時停止」)。
    0を返します。

}

公開された27元の記事 ウォンの賞賛8 ビュー2120

おすすめ

転載: blog.csdn.net/hgxy123/article/details/104238904