ホームページ  >  記事  >  バックエンド開発  >  PHPでリンクリストの下からk番目のノードを出力する方法(コード例)

PHPでリンクリストの下からk番目のノードを出力する方法(コード例)

不言
不言オリジナル
2018-09-12 17:02:541369ブラウズ

この記事の内容は、出力されたリンクリストの下からk番目のノード(コード例)をPHPがどのように実装するかについてです。一定の参考値がありますので、困っている方は参考にしていただければと思います。役に立ちました。

リンク リストを入力し、リンク リストの最後から k 番目のノードを出力します。最初のポインタは k 番目のノードに到達するまでに (k-1) ステップかかります。2 つのポインタは同時に後方に移動します。最初のノードが終点に到達すると、2 番目のノードは下から k 番目のノードに位置します。 .

<?php
class Node{
        public $data;
        public $next;
}
//创建一个链表
$linkList=new Node();
$linkList->next=null;
$temp=$linkList;
for($i=1;$i<=10;$i++){
        $node=new Node();
        $node->data="aaa{$i}";
        $node->next=null;
        $temp->next=$node;
        $temp=$node;
}
//输入一个链表,输出该链表中倒数第k个结点。

function find($linkList,$k){
        //速度快的指针
        $fast=$linkList;
        //速度慢的指针
        $slow=$linkList;
        //快指针先移动k-1步
        for($i=0;$i<$k-1;$i++){
                $fast=$fast->next;
        }   
        if($fast->next==null){
                return false;
        }   
        //快慢指针一块移动
        while($fast->next!=null){
                $fast=$fast->next;
                $slow=$slow->next;
        }   
        return $slow;
}


$knode=find($linkList,2);
var_dump($knode);

object(Node)#10 (2) {
  ["data"]=>  string(4) "aaa9"
  ["next"]=>  object(Node)#11 (2) {
    ["data"]=>    string(5) "aaa10"
    ["next"]=>    NULL
  }
}

関連する推奨事項:

PHP でカウントダウンを取得するK 番目のノードのリンク リスト メソッド

単一リンク リストを実装するための php サンプル コード_PHP チュートリアル

以上がPHPでリンクリストの下からk番目のノードを出力する方法(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。