<?php
class Node{
private $data;
private $next;
public function getData(){
return $this->data;
}
public function setData($data){
$this->data = $data;
}
public function getNext(){
return $this->next;
}
public function setNext($next){
$this->next = $next;
}
public function __construct($data,$next){
$this->setData($data);
$this->setNext($next);
}
}
class LinkList
{
private $header;
private $size;
public function __construct(){
header("content-type:text/html; charset=utf-8");
$this->setHeader(new Node(null,null));
}
public function setHeader( $value){
$this->header = $value ;
}
public function getHeader(){
return $this->header;
}
public function add($data){
$node = $this->header ;
while($node->getNext() != null){
$node = $node->getNext();
}
$node->setNext(new Node($data,null));
}
public function getSize(){
$i = 0;
$node = $this->header;
while($node->getNext() != null){
$i++;
$node = $node->getNext();
}
return $i;
}
public function removeAt($data)
{
$node=$this->header;
while($node->getData()!=$data)
{
$node=$node->getNext();
}//print_r($node);exit;
//
$data_ = $node->getNext()!=null ? $node->getNext()->getData() : null;
$node->setData( $data_ );
$data__ = $node->getNext()!=null ? $node->getNext()->getNext() : null;
$node->setNext($data__);
}
public function getAt($data)
{
$node=$this->header->getNext();
if($node->getNext()==null){
print("数据集为空!");
return;
}
while($node->getData()!=$data)
{
if($node->getNext()==null){break;}
$node=$node->getNext();
}
return $node->getData();
}
public function get()
{
$node=$this->header;
if($node->getNext()==null){
print("数据集为空!");
return;
}
echo '<hr/>';
while($node->getNext()!=null)
{
print($node->getNext()->getData());echo ' ';
if($node->getNext()->getNext()==null){break;}
$node=$node->getNext();
}
echo '<hr/>';
}
public function update($initial,$data)
{
$node=$this->header;
while($node->getData()!=$initial)
{
if($node->getNext()==null){break;}
$node=$node->getNext();
}
$node->setData($data);
}
}
$lk = new LinkList();
$lk->add(11);
$lk->add(22);$lk->get();
$lk->removeAt(11);
//$lk->update(11,33);
//$lk->update(22,33);
//$lk->removeAt(11);$lk->removeAt(22);
$lk->get();
//echo $lk->getSize();
http://www.oschina.net/code/snippet_129890_4731