$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 ->val< $val && $one != $head ) { $one = $one ->next;} |
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 ->val< $val ) { $one = $one ->next; 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; |
*/ |