数据结构算法 - 线性表的实现
数组是线性表数据结构中顺序存储的具体实现。用一组连续的内存空间存储相同类型的数据链表是线性表数据结构中链式存储的具体实现。用节点的指针把各个节点串联在一起数组的基本操作在指定位置插入元素删除指定元素查找值等于给定值的元素查找数组小标为 index 的元素根据线性表顺序存储的数据结构特征我们可以知道数组的插入、删除时间复杂度为O(n)因为涉及到数据的搬移操作数组的根据下标访问元素的时间复杂度为O(1)这是连续的内存空间带来的优势根据寻址公式我们可以很容易的找到指定下标的内存地址数组的代码实现 (PHP)classMyArray{// 数组大小private$size;// 当前数组长度private$len;// 数组的数据private$data;/** * 初始化数组 */publicfunction__construct($size0){if($size0)thrownewException(Invalid Array size);$this-size$size;$this-len0;$this-dataarray();}/** * 判断数组是否已满 */privatefunctionfull(){if($this-size$this-len)returntrue;returnfalse;}/** * 索引是否超出范围 */privatefunctionoutOfRange($index){if($index0||$index$this-len)returntrue;returnfalse;}/** * 根据索引访问数据元素 */publicfunctionfind($index){if(true$this-outOfRange($index)){thrownewException(Index out of range);}return$this-data[$index];}/** * 在指定索引 index 处插入数据 data */publicfunctioninsert($index,$data){if(true$this-full()){thrownewException(Array is full);}for($i$this-len-1;$i$index;$i--){$this-data[$i]$this-data[$i-1];}$this-data[$index]$data;$this-len;return$index;}/** * 删除指定索引的值 */publicfunctiondelete($index){if(true$this-outOfRange($index)){thrownewException(Index out of range);}$data$this-data[$index];for($i$index;$i$this-len-1;$i){$this-data[$i]$this-data[$i1];}// unset 掉移动元素后最后的重复元素unset($this-data[$this-len-1]);$this-len--;return$data;}}链表的基本操作初始化链表插入一个节点删除指定节点查询值等于给定值的节点链表的代码实现 (PHP)classLinkedListNode{// 节点的数据public$data;// 节点的指针public$next;publicfunction__construct($datanull){$this-data$data;$this-nextnull;}}classLinkedList{/** * 哨兵头节点 * var LinkedListNode */public$head;// 链表的长度public$len;/** * 初始化链表 */publicfunction__construct(LinkedListNode$head){$this-head$head;$this-len0;}/** * 插入节点默认头插法 (头节点后插入) */publicfunctioninsert($value){try{$this-insertAfterNode($this-head,$value)}catch(Exception$e){thrownewException($e);}returntrue;}/** * 查询值等于给定值的节点 */publicfunctiongetNodeByValue($value){$curNode$this-head;while(null!$curNode){if($value$curNode-data){return$curNode;}$curNode$curNode-next;}returnnull;}/** * 查询链表的第 index 个节点 */publicfunctiongetNodeByIndex($index){if($index0||$index$this-len){thrownewException(Index out of range);}$curNode$this-head;for($i0;$i$index;$i){$curNode$curNode-next;}return$curNode;}publicfunctiondelete(LinkedListNode$node){if(null$node){thrownewException(Invalid node);}$preNode$this-getPreNode($node);$preNode-next$node-next;unset($node);$this-len--;returntrue;}privatefunctiongetPreNode(LinkedListNode$node){if(null$node){thrownewException(Invalid node);}$curNode$this-head;$preNode$this-head;while(null!$curNode$curNode!$node){$preNode$curNode;$curNode$curNode-next;}return$preNode;}/** * 指定节点后插入元素 */privatefunctioninsertAfterNode(LinkedListNode$node,$value){if(null$node)thrownewException(Node is null);$newNodenewLinkedListNode($value);$newNode-next$node-next;$node-next$newNode;$this-len;returntrue;}}

相关新闻

VMware虚拟机导致宿主机蓝屏:从原理到排查的完整指南

VMware虚拟机导致宿主机蓝屏:从原理到排查的完整指南

“我说了,我什么都没做!”这句话是不是很熟悉?当你面对一个突然蓝屏的电脑,而VMware虚拟机窗口还定格在启动画面时,那种百口莫辩的无力感瞬间涌上心头。你只是像往常一样,双击了那个虚拟机的图标&#xff0…

2026/7/28 20:16:07 阅读更多 →
物联网硬件安全:SE050芯片与PIC32MX795F512L集成方案

物联网硬件安全:SE050芯片与PIC32MX795F512L集成方案

1. 物联网安全现状与硬件级解决方案的必要性在2023年全球物联网连接数突破160亿的背景下,安全事件同比增长了47%。传统基于软件加密的方案暴露出致命缺陷——某智能家居厂商的密钥泄露事件导致超过200万台设备被劫持。这揭示了物联网安全的本质矛盾:终端…

2026/7/28 20:16:07 阅读更多 →
Zenmap图形化Nmap工具:从安装配置到实战扫描技巧全解析

Zenmap图形化Nmap工具:从安装配置到实战扫描技巧全解析

1. 项目概述:为什么需要Zenmap?如果你接触过网络安全、系统运维或者仅仅是好奇自己的网络里有什么,那么Nmap这个名字你一定不陌生。它被誉为“端口扫描之王”,是探测网络、发现主机、识别服务与操作系统的瑞士军刀。然而&#xff…

2026/7/28 20:16:06 阅读更多 →

最新新闻

计算机毕业设计之基于springboot的党群服务平台

计算机毕业设计之基于springboot的党群服务平台

随着信息技术的飞速发展,党群服务平台的建设已成为提升党建工作效率、增强党员群众互动的关键手段。本研究旨在构建一个基于Spring Boot的党群服务平台,以Java作为后端开发语言,结合Spring Boot框架的高效、简洁特性,实现快速开发…

2026/7/28 20:26:11 阅读更多 →
使用OpenAI Agents SDK构建多Agent协作系统指南

使用OpenAI Agents SDK构建多Agent协作系统指南

1. 项目概述:基于OpenAI Agents SDK构建多Agent协作系统最近在开发一个需要多智能体协作的自动化系统时,我深入研究了OpenAI最新推出的Agents SDK。这个Python库为构建复杂的多Agent系统提供了强大支持,特别适合需要多个AI智能体协同工作的场…

2026/7/28 20:26:11 阅读更多 →
计算机毕业设计之基于SpringBoot的党史管理系统

计算机毕业设计之基于SpringBoot的党史管理系统

当下社会,信息技术充斥社会各个领域,已融入人们生活的点滴,日常中人们管理信息、办理业务、购买商品等都可以网络线上进行,快速而又便利,特别是随着移动互联网时代的到来,更是让人们随时享受着网络给带来的…

2026/7/28 20:26:11 阅读更多 →
提示工程团队建设与人才培养全攻略

提示工程团队建设与人才培养全攻略

1. 提示工程团队梯队建设概述在AI技术快速发展的当下,提示工程(Prompt Engineering)已成为连接人类意图与AI模型能力的关键桥梁。作为一位经历过多个AI项目落地的架构师,我深刻体会到:一个高效的提示工程团队&#xff…

2026/7/28 20:26:11 阅读更多 →
Spring声明式事务原理与IoC容器深度解析

Spring声明式事务原理与IoC容器深度解析

1. Spring IOC容器与声明式事务的本质关联 Spring框架最核心的设计思想就是IoC(控制反转)和AOP(面向切面编程),而声明式事务正是这两大核心技术的完美结合体。要理解声明式事务的入口点,必须先从IoC容器的运…

2026/7/28 20:26:11 阅读更多 →
Golang的内存管理--学习笔记

Golang的内存管理--学习笔记

Go的内存管理内存的分级arena区SpansGo中的mspan内存管理组件mcachemcentralmheap内存的分配流程内存的分级 使用的是多级分配的办法,将内存分为多级,进行分级管理,从而降低锁的粒度。并且将可用的堆内存采用二级管理,其中每个线…

2026/7/28 20:25:11 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻