如何用PHP实现一个链表结构

数据类型的约束会不够严格
服务器君一共花费了291.151 ms进行了5次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

最近慢慢开始复习数据结构这一块,那么这里用PHP也写一个链表结构吧。PHP本身是弱类型的语言,数据类型的约束会不够严格。虽然下面的代码能够实现链表的基本功能,但也许会存在一些我还没注意到的缺陷。如果你有更好的方案,也可以告诉我~

<?php
class Node
{
    private $Data;//节点数据
    private $Next;//下一节点
	
    public function setData($value){
        $this->Data=$value;
    }
	
    public function setNext($value){
         $this->Next=$value;
    }    
	
    public function getData(){
        return $this->Data;
    }
	
    public function getNext(){
        return $this->Next;
    }
	
    public function __construct($data,$next){
        $this->setData($data);
        $this->setNext($next);
    }
}
class LinkList
{
    private $header;//头节点
    private $size;//长度
    public function getSize()
	{
        $i=0;
        $node=$this->header;
        while($node->getNext()!=null)
        {   
			$i++;
            $node=$node->getNext();
        }
      	return $i;
    }
	
    public function setHeader($value){
        $this->header=$value;
    }
	
    public function getHeader(){
        return $this->header;
    }
	
    public function __construct(){
      	header("content-type:text/html; charset=utf-8");
        $this->setHeader(new Node(null,null));
    }
    /**
    *@param  $data--要添加节点的数据
    * 
    */
    public function add($data)
    {
        $node=$this->header;
        while($node->getNext()!=null)
        {
            $node=$node->getNext();
        }
        $node->setNext(new Node($data,null));
    }
     /**
    *@param  $data--要移除节点的数据
    * 
    */
    public function removeAt($data)
    {
        $node=$this->header;
        while($node->getData()!=$data)
        {
            $node=$node->getNext();
        }
        $node->setNext($node->getNext());
        $node->setData($node->getNext()->getData());
    }
     /**
    *@param  遍历
    * 
    */
    public function get()
    {
        $node=$this->header;
        if($node->getNext()==null){
            print("数据集为空!");
            return;
        }
        while($node->getNext()!=null)
        {
            print('['.$node->getNext()->getData().'] -> ');
            if($node->getNext()->getNext()==null){break;}
            $node=$node->getNext();
        }
    }
     /**
    *@param  $data--要访问的节点的数据
    * @param 此方法只是演示不具有实际意义
    * 
    */
    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();        
    }
     /**
    *@param  $value--需要更新的节点的原数据  --$initial---更新后的数据
    * 
    */
    public function update($initial,$value)
    {
         $node=$this->header->getNext();
		if($node->getNext()==null){
       		print("数据集为空!");
            return;
        }
        while($node->getData()!=$data)
        {
            if($node->getNext()==null){break;}
            $node=$node->getNext();
        }
		$node->setData($initial);     
    }
}
$lists = new LinkList();
$lists -> add(1);
$lists -> add(2);
$lists -> get();
echo '<pre>';
print_r($lists);
echo '</pre>';
?>

本文地址:http://www.nowamagic.net/librarys/veda/detail/1561,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1561

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《JavaScript高级程序设计(第2版)》 尼古拉斯·泽卡斯(Nicholas C.Zakas) (作者), 李松峰 (译者), 曹力 (译者)

《JavaScript高级程序设计(第2版)》在上一版基础上进行了大幅度更新和修订,融入了近几年来JavaScript应用发展的最新成果,几乎涵盖了所有需要理解的重要概念和最新的JavaScript应用成果。从颇具深度的JavaScript语言基础到作用域(链),从引用类型到面向对象编程,从极其灵活的匿名函数到闭包的内部机制,从浏览器对象模型(BOM)、文档对象模型(DOM)到基于事件的Web脚本设计,从XML(E4X)到Ajax及JSON,从高级前端开发技术到前沿的客户端存储,从最佳编程实践到即将成为现实的API,直至JavaScript未来的发展,全景式地展示了JavaScript高级程序设计的方方面面。

更多计算机宝库...