淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)

字號(hào):


    鏈表:是一個(gè)有序的列表,但是它在內(nèi)存中是分散存儲(chǔ)的,使用鏈表可以解決類似約瑟夫問(wèn)題,排序問(wèn)題,搜索問(wèn)題,廣義表,單向鏈表,雙向鏈表,環(huán)形鏈表
    PHP的底層是C,當(dāng)一個(gè)程序運(yùn)行時(shí),內(nèi)存分成五個(gè)區(qū)(堆區(qū),棧區(qū),全局區(qū),常量區(qū),代碼區(qū))
    規(guī)定:基本數(shù)據(jù)類型,一般放在棧區(qū),復(fù)合數(shù)據(jù)類型,比如對(duì)象,放在堆區(qū)
    定義一個(gè)類Hero
    定義成員屬性排名 $no
    定義成員屬性姓名 $name
    定義成員屬性昵稱 $nickname
    定義成員屬性 $next,是一個(gè)引用,指向下一個(gè)Hero對(duì)象
    定義構(gòu)造函數(shù),傳遞參數(shù):$no,$name,$nickname
    創(chuàng)建一個(gè)頭head,該head只是一個(gè)頭,不放入數(shù)據(jù)
    獲取$head對(duì)象,new Hero()
    獲取第一個(gè)Hero對(duì)象$hero,new Hero(1,”宋江”,”及時(shí)雨”)
    連接兩個(gè)對(duì)象,$head->next=$hero
    獲取第二個(gè)Hero對(duì)象$hero2,new Hero(2,”盧俊義”,”玉麒麟”)
    連接兩個(gè)對(duì)象,$hero->next=$hero2
    遍歷鏈表
    定義一個(gè)函數(shù)showHeros(),參數(shù):$head對(duì)象
    定義一個(gè)臨時(shí)變量$cur來(lái)存儲(chǔ) $head對(duì)象
    while循環(huán),條件$cur->next不為null
    打印一下
    指針后移,$cur=$cur->next
    PHP版:
    <?php
    /**
    * 英雄類
    */
    class Hero{
      public $no;
      public $name;
      public $nickname;
      public $next=null;
      public function __construct($no='',$name='',$nickname=''){
        $this->no=$no;
        $this->name=$name;
        $this->nickname=$nickname;
      }
    }
    class LinkListDemo{
      public static function main(){
        $head=new Hero();
        $hero1=new Hero(1,"宋江","及時(shí)雨");
        $head->next=$hero1;
        $hero2=new Hero(2,"盧俊義","玉麒麟");
        $hero1->next=$hero2;
        LinkListDemo::showHeros($head);
      }
      /**
      * 展示英雄
      */
      public static function showHeros($head){
        $cur=$head;
        while($cur->next!=null){
          echo "姓名:".$cur->next->name."<br/>";
          $cur=$cur->next;
        }
      }
    }
    LinkListDemo::main();
    java版:
    class Hero{
        public int no;
        public String name;
        public String nickname;
        public Hero next=null;
        public Hero(){
           
        }
        public Hero(int no,String name,String nickname) {
          this.no=no;
          this.name=name;
          this.nickname=nickname;
        }
      }
    public class LinkListDemo {
      /**
       * @param args
       */
      public static void main(String[] args) {
        Hero head=new Hero();
         
        Hero hero1=new Hero(1, "宋江", "及時(shí)雨");
        head.next=hero1;
        Hero hero2=new Hero(2, "盧俊義", "玉麒麟");
        hero1.next=hero2;
        showHeros(head);
      }
      /**
       * 展示英雄
       * @param head
       */
      public static void showHeros(Hero head){
        Hero cur=head;
        while(cur.next!=null){
          System.out.println("姓名:"+cur.next.name);
          cur=cur.next;
        }
      }
    }
    以上這篇淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考