程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP小教程之實現雙向鏈表

PHP小教程之實現雙向鏈表

編輯:關於PHP編程

     看了很久數據結構但是沒有怎麼用過,在網上看到了關於PHP的數據結構,學習了一下,與大家一起分享一下。

     

    .代碼如下:
    <?php
            class Hero
            {
                public $pre=null;
                public $no;
                public $name;
                public $next=null;
                public function __construct($no='',$name='')
                {
                    $this->no=$no;
                    $this->name=$name;
                }
                static public function addHero($head,$hero)
                {
                    $cur = $head;
                    $isExist=false;
                    //判斷目前這個鏈表是否為空
                    if($cur->next==null)
                    {
                        $cur->next=$hero;
                        $hero->pre=$cur;
                    }
                    else
                    {
                        //如果不是空節點,則安排名來添加
                        //找到添加的位置
                        while($cur->next!=null)
                        {
                            if($cur->next->no > $hero->no)
                            {
                                break;
                            }
                            else if($cur->next->no == $hero->no)
                            {
                                $isExist=true;
                                echo "<br>不能添加相同的編號";
                            }
                            $cur=$cur->next;
                        }
                        if(!$isExist)
                        {
                            if($cur->next!=null)
                            {
                                $hero->next=$cur->next;
                            }
                            $hero->pre=$cur;
                            if($cur->next!=null)
                            {
                                $hero->next->pre=$hero;
                            }
                            $cur->next=$hero;                    
                        }
                    }
                }
                //遍歷
                static public function showHero($head)
                {
                    $cur=$head;
                    while($cur->next!=null)
                    {
                        echo "<br>編號:".$cur->next->no."名字:".$cur->next->name;
                        $cur=$cur->next;
                    }
                }
                static public function delHero($head,$herono)
                {
                    $cur=$head;
                    $isFind=false;
                    while($cur!=null)
                    {
                        if($cur->no==$herono)
                        {
                            $isFind=true;
                            break;
                        }
                        //繼續找
                        $cur=$cur->next;
                    }
                    if($isFind)
                    {
                        if($cur->next!=null)
                        {
                            $cur->next_pre=$cur->pre;
                        }
                        $cur->pre->next=$cur->next;
                    }
                    else
                    {
                        echo "<br>沒有找到目標";
                    }                
                }
            }
            $head = new Hero();
            $hero1 = new Hero(1,'1111');
            $hero3 = new Hero(3,'3333');
            $hero2 = new Hero(2,'2222');
            Hero::addHero($head,$hero1);
            Hero::addHero($head,$hero3);
            Hero::addHero($head,$hero2);
            Hero::showHero($head);
            Hero::delHero($head,2);
            Hero::showHero($head);
    ?>
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved