Home > Backend Development > PHP Tutorial > PHP 实现单链表

PHP 实现单链表

WBOY
Release: 2016-06-23 13:51:52
Original
1131 people have browsed it


header("Content-type:text/html;charset=utf-8");
//链表节点 
class node { 
    public static $count = -1; //节点id 
    public $name; //节点名称 
    public $next; //下一节点 
    public $id;

    public function __construct($name) { 
        $this->id = self::$count;
        $this->name = $name; 
        $this->next = null; 
        self::$count += 1;
    } 
}
//单链表 
class singelLinkList { 
    private $header;
    private $current;
    public $count;
   
    //构造方法 
    public function __construct($data = null) { 
        $this->header = new node ($data);
        $this->current = $this->header; 
        $this->count = 0;
    } 

    //添加节点数据 
    public function addLink($node) {
        if($this->current->next != null)
            $this->current = $this->current->next; 
        $this->count++;
        $node->next = $this->current->next; 
        $this->current->next = $node; 
    } 

    //删除链表节点 
    public function delLink($id) { 
        $current = $this->header; 
        $flag = false; 
        while ( $current->next != null ) { 
            if ($current->next->id == $id) { 
                $flag = true; 
                break; 
            } 
            $current = $current->next; 
        } 
        if ($flag) { 
            $this->count--;
            $current->next = $current->next->next; 
        } else { 
            echo "未找到id=" . $id . "的节点!
"; 
        } 
    }

    //获取链表 
    public function getLinkList() { 
        $this->checkNull();
        $current = $this->header; 
        while ( $current->next != null ) { 
            echo 'id:' . $current->next->id . '   name:' . $current->next->name . "
"; 
            if ($current->next->next == null) { 
                break; 
            } 
            $current = $current->next; 
        } 
    } 

        //获取长度
    public function getLinkLength()
    {
        echo $this->count;
    }

    //获取当前节点
    public function getCurrent()
    {
        $this->checkNull();
        echo '当前节点id:' . $this->current->next->id . '   name:' . $this->current->next->name . "
"; 
    }

    //判断是否为空
    public function checkNull()
    {
        if ($this->header->next == null) { 
            echo "链表为空!"; 
            exit;
        } 
    }

    //获取节点名字 
    public function getLinkById($id) { 
        $this->checkNull();
        $current = $this->header; 
        while ( $current->next != null ) { 
            if ($current->id == $id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        echo '修改后id:' . $current->id . '   name:' . $current->name . "
"; 
    } 

    //更新节点名称 
    public function updateLink($id, $name) { 
        $this->checkNull();
        $current = $this->header; 
        while ( $current->next != null ) { 
            if ($current->id == $id) { 
                break; 
            } 
            $current = $current->next; 
        } 
        return $current->name = $name; 
    }
}
$list = new singelLinkList (); 
$list->addLink ( new node ('aaaaaa' ) ); 
$list->addLink ( new node ('bbbbbb' ) ); 
$list->addLink ( new node ('cccccc' ) ); 
$list->addLink ( new node ('dddddd' ) ); 
echo "所有链表节点:
";
$list->getLinkList(); 
echo "
";
echo "当前链表末位节点:
";
$list->getCurrent();
echo "
";
echo "修改链表节点id为0的:
";
$list->updateLink(0, '2222222');
echo "查找id为0的节点:
";
$list->getLinkById(0); 
echo "
";
echo "删除链表节点id为0:
";
$list->delLink(0); 
echo "所有链表节点:
";
$list->getLinkList(); 
echo "
";
echo "所有链表节点:
";
$list->getLinkLength (); 
?>

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template