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

数据类型的约束会不够严格
服务器君一共花费了213.063 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本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

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

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

《大话数据结构》 程杰 (作者)

《大话数据结构》主要内容包含:数据结构介绍、算法推导大O阶的方法;顺序结构与链式结构差异、栈与队列的应用;串的朴素模式匹配、KMP模式匹配算法;二叉树前中后序遍历、赫夫曼树及应用;图的深度、广度遍历;最小生成树两种算法、最短路径两种算法;拓扑排序与关键路径算法;折半查找、插值查找、斐波那契查找等静态查找;稠密索引、分块索引、倒排索引等索引技术;二叉排序树、平衡二叉树等动态查找;B树、B+树技术,散列表技术;冒泡、选择、插入等简单排序;希尔、堆、归并、快速等改进排序。

更多计算机宝库...