鏈表:是一個有序的列表,但是它在內(nèi)存中是分散存儲的,使用鏈表可以解決類似約瑟夫問題,排序問題,搜索問題,廣義表,單向鏈表,雙向鏈表,環(huán)形鏈表
PHP的底層是C,當(dāng)一個程序運(yùn)行時,內(nèi)存分成五個區(qū)(堆區(qū),棧區(qū),全局區(qū),常量區(qū),代碼區(qū))
規(guī)定:基本數(shù)據(jù)類型,一般放在棧區(qū),復(fù)合數(shù)據(jù)類型,比如對象,放在堆區(qū)
定義一個類Hero
定義成員屬性排名 $no
定義成員屬性姓名 $name
定義成員屬性昵稱 $nickname
定義成員屬性 $next,是一個引用,指向下一個Hero對象
定義構(gòu)造函數(shù),傳遞參數(shù):$no,$name,$nickname
創(chuàng)建一個頭head,該head只是一個頭,不放入數(shù)據(jù)
獲取$head對象,new Hero()
獲取第一個Hero對象$hero,new Hero(1,”宋江”,”及時雨”)
連接兩個對象,$head->next=$hero
獲取第二個Hero對象$hero2,new Hero(2,”盧俊義”,”玉麒麟”)
連接兩個對象,$hero->next=$hero2
遍歷鏈表
定義一個函數(shù)showHeros(),參數(shù):$head對象
定義一個臨時變量$cur來存儲 $head對象
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,"宋江","及時雨");
$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;
}
}
}
以上這篇淺談PHP鏈表數(shù)據(jù)結(jié)構(gòu)(單鏈表)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考