php双向链表+性能,用php实现双向链表

[php]代码库$n=10;//个数

class link{

public $val;

public $next=null;

public $pre=null;

static $num=0;

//初始化

function __construct($num)

{

$this->val=$num;

self::$num++;//别忘记self是一般指向静态变量 静态方法的指针 而this则是初始化后指向对象的指针

}

//访问结点

function read_link($val,$head)

{

$one=$head->next;

while($one->valnext;}

if($one==$head) {echo 'not exist this node!';return;}

return $one;

}

//对象个数

function __get($num)

{

return self::$num;

}

//按照大小增加结点

function add_link($val,$head)

{

$one=$head->next;

while($one!=$head){

if($one->valnext;continue;}

else if($one->val=$val){echo 'linknode is already exist!';return;}

else if($one->val>$val) break;

}

$pre=$one->pre;

$cur=new link($val);

$pre->next=$cur;

$one->pre=$cur;

$cur->next=$one;

$cur->pre=$pre;

return $cur;

}

//删除该结点

function delete_node($val,$head)

{

$one=$head->next;

while($one!=$head) {

if($one->val!=$val) {$one=$one->next;continue;}

else break;

}

if($one==$head) {echo 'not exist linknode!';return;}

else{

$pre=$one->pre;

$next=$one->next;

$pre->next=$next;

$next->pre=$pre;

$one=new link(NULL);//引用变量值改变不影响被引用变量的值

//unset($one);只是引用数减1 并不能删除

}

return $one;

}

}

$head=new link(null);

for($i=1;$i<=$n;$i++)

{

if(isset($cur))$temp=$cur;//保存前一次cur

if($i==1){

$cur=new link($i);

$head->next=$cur;

$cur->pre=$head;

}else if($i==$n){//最后一次则和头结点在一起

$cur=new link($i);

$temp->next=$cur;

$cur->next=$head;

$head->pre=$cur;

}

else{

$cur=new link($i);

$temp->next=$cur;

$cur->pre=$temp;

}

}

//var_dump($head->read_link(10,$head)->val);访问结点

//var_dump($head->add_link(10,$head));//增加结点

//var_dump($head->add_link(100,$head)->val);

//var_dump($head->delete_node(102,$head));//删除结点

//var_dump($head->delete_node(10,$head)->val);

//var_dump($head->read_link(10,$head)->val);

/* $a=1;

$b=$a;

$b=NULL;

echo $a;//看来引用变量改变值的时候 两个变量就独立咯

//unset($b);

$a=NULL;var_dump($b);//看来变量有引用和被引用的关系

echo $a;

*/

694748ed64b9390909c0d88230893790.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值