程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [PHP] 鏈表數據結構(單鏈表),php表數據結構單鏈

[PHP] 鏈表數據結構(單鏈表),php表數據結構單鏈

編輯:關於PHP編程

[PHP] 鏈表數據結構(單鏈表),php表數據結構單鏈


鏈表:是一個有序的列表,但是它在內存中是分散存儲的,使用鏈表可以解決類似約瑟夫問題,排序問題,搜索問題,廣義表

單向鏈表,雙向鏈表,環形鏈表

 

PHP的底層是C,當一個程序運行時,內存分成五個區(堆區,棧區,全局區,常量區,代碼區)

規定:基本數據類型,一般放在棧區

復合數據類型,比如對象,放在堆區

 

定義一個類Hero

定義成員屬性排名 $no

定義成員屬性姓名 $name

定義成員屬性昵稱 $nickname

定義成員屬性 $next,是一個引用,指向下一個Hero對象

定義構造函數,傳遞參數:$no,$name,$nickname

 

創建一個頭head,該head只是一個頭,不放入數據

獲取$head對象,new Hero()

獲取第一個Hero對象$hero,new Hero(1,”宋江”,”及時雨”)

連接兩個對象,$head->next=$hero

獲取第二個Hero對象$hero2,new Hero(2,”盧俊義”,”玉麒麟”)

連接兩個對象,$hero->next=$hero2

 

遍歷鏈表

定義一個函數showHeros(),參數:$head對象

定義一個臨時變量$cur來存儲 $head對象

while循環,條件$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,"宋江","及時雨");
        $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, "宋江", "及時雨");
        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;
        }
    }
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved