php线性表小例子
来源:互联网 发布:手机读电子书软件 编辑:程序博客网 时间:2024/05/22 10:53
<?php/** 类名:LNode* 功能:线性表的链式存储实现* @author xxy*/ini_set('display_errors',1);error_reporting(E_ALL);class Node { public $key = null; public $data = null; //存储数据元素 public $next = null; //存储下一个数据元素的地址}class LinkList{ private $head = null; private $end = null; public function insert($key, $data){ $node = new Node(); $node->key = $key; $node->data = $data; if($this->end==null){ $this->end = $node; }else{ $this->end->next = $node; $this->end = $node; } if ($this->head == null){ $this->head = $node; } return $node; } public function del_node($key){ $node = $this->head; //echo $node; exit; $pre_node = null; while ( $node != null ){ if ($node->key == $key){ if($pre_node == null ){ $this->head = $node->next; //$this->end; if ($this->end == $node){ $this->end = null; } }else{ $pre_node->next = $node->next; } break; } $pre_node = $node; $node = $node->next; } } public function select($key){ $node = $this->head; //echo $node; exit; $pre_node = null; while ( $node != null ){ if ($node->key == $key){ $node_data = $node->head->data; break; }else{ $pre_node = $node; $node = $node->next; } } return $node_data; }}function test_link_insert_end(){ $link = new LinkList(); $info = array(); for($i=1;$i<5;$i++) { $link->insert($i, $i); } return $link;}$link = test_link_insert_end();print_r($link);$s = $link->select(2);$s = $link->del_node(3);print_r($link);print_r($s);?>