热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPSPL数据结构笔记摘要

:本篇文章主要介绍了PHPSPL数据结构笔记摘要,对于PHP教程有兴趣的同学可以参考一下。
php SPL(Standard PHP Library) 主要用到的数据结构有:双向链表(SplDoublyLinkedLis),栈(SplStack),队列(SplQueue),堆(SplHeap),大根堆(SplMaxHeap),小根堆(SplMinHeap), 优先级队列(SplPriorityQueue),固定数组(SplFixedArray),对象存储(SplStorageObject)。

SplDoublyLinkedList

数据结构:(c代码参考PHP7.0.0)

typedef struct _spl_ptr_llist_element {
    struct _spl_ptr_llist_element *prev;
    struct _spl_ptr_llist_element *next;
    int                            rc;      // 引用次数
    void                          *data;    // 数据类型
} spl_ptr_llist_element;

typedef struct _spl_ptr_llist {
    spl_ptr_llist_element   *head;  
    spl_ptr_llist_element   *tail;
    spl_ptr_llist_dtor_func  dtor;    // 删除元素   引用-1
    spl_ptr_llist_ctor_func  ctor;    // 创建元素   引用+1
    int count;                        // 元素个数
} spl_ptr_llist;

struct _spl_dllist_object {
    zend_object            std;
    spl_ptr_llist         *llist;
    int                    traverse_position;
    spl_ptr_llist_element *traverse_pointer;
    zval                  *retval;
    int                    flags;
    zend_function         *fptr_offset_get;
    zend_function         *fptr_offset_set;
    zend_function         *fptr_offset_has;
    zend_function         *fptr_offset_del;
    zend_function         *fptr_count;
    zend_class_entry      *ce_get_iterator;
    HashTable             *debug_info;
};

双向链表
SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {
	/* 方法 */
	public __construct ( void )
	public void add ( mixed $index , mixed $newval )
	public mixed bottom ( void )
	public int count ( void )
	public mixed current ( void )
	public int getIteratorMode ( void )
	public bool isEmpty ( void )
	public mixed key ( void )
	public void next ( void )
	public bool offsetExists ( mixed $index )
	public mixed offsetGet ( mixed $index )
	public void offsetSet ( mixed $index , mixed $newval )
	public void offsetUnset ( mixed $index )
	public mixed pop ( void )
	public void prev ( void )
	public void push ( mixed $value )
	public void rewind ( void )
	public string serialize ( void )
	public void setIteratorMode ( int $mode )
	public mixed shift ( void )      // 删除第一个元素
	public mixed top ( void )
	public void unserialize ( string $serialized )
	public void unshift ( mixed $value )   //将value插入的第一个元素,原来的第一个元素不删除
	public bool valid ( void )
}

需要注意的是:

add 是5.5+版本添加的函数,其它都是5.3+

从数据结构中可以看出,虽然许多函数中都包含有直接索引第index 个元素,如果不在范围则抛出OutOfRangeException异常,实际实现时时间复杂度为O(n)。

具体函数详细可参考php官方手册

以上就介绍了PHP SPL 数据结构笔记摘要,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

推荐阅读
  • JavaScript 页面卸载事件详解 (onunload)
    当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
  • 本文探讨了使用lightopenid库实现网站登录,并在用户成功登录后,如何获取其姓名、电子邮件及出生日期等详细信息的方法。特别针对Google OpenID进行了说明。 ... [详细]
  • Multisim环境下高频小信号谐振放大器的设计与分析
    本次实验旨在通过Multisim软件平台,深入理解并实践高频小信号谐振放大器的设计与分析。具体目标包括:掌握Multisim的基本操作与功能;深入了解谐振放大器的工作机制;熟练掌握放大器性能参数的测试方法。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • CSS 实现 Inline-Block 元素水平居中
    本文介绍了如何使用 CSS 将 inline-block 类型的元素进行水平居中对齐的方法,适用于多种布局需求。 ... [详细]
  • 探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • 深入解读宋代诗人侯置的《临江仙》,探讨其文字之美与情感深度。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 利用无代码平台实现高效业务应用开发
    随着市场环境的变化加速,全球企业都在探索更为敏捷的应用开发模式,以便快速响应新兴的商业机遇。然而,传统的软件开发方式不仅成本高昂,而且耗时较长,这往往导致IT与业务部门之间的合作障碍,进而影响项目的成功。本文将探讨如何通过无代码开发平台解决这些问题。 ... [详细]
  • Adobe Flash Player:功能与历史回顾
    本文详细介绍了Adobe Flash Player的功能及其在互联网发展史上的重要角色,同时探讨了其停止支持的原因及后续影响。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • 本文深入探讨了WPF框架下的数据验证机制,包括内置验证规则的使用、自定义验证规则的实现方法、错误信息的有效展示策略以及验证时机的选择,旨在帮助开发者构建更加健壮和用户友好的应用程序。 ... [详细]
author-avatar
黑马理财投资
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有