数据结构栈、队列、链表、散列表

news2025/1/12 1:04:40
栈(stack)

栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶(top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素。

队列(queue)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

image-20240111210049424

链表(Link)

链表是一种数据结构,和数组同级。比如,Java 中我们使用的 ArrayList,其实现原理是数组。而LinkedList 的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。

image-20240111210119711

散列表(Hash Table)

散列表(Hash table,也叫哈希表)是一种查找算法,与链表、树等算法不同的是,散列表算法在查找时不需要进行一系列和关键字(关键字是数据元素中某个数据项的值,用以标识一个数据元素)的比较操作。

散列表算法希望能尽量做到不经过任何比较,通过一次存取就能得到所查找的数据元素,因而必须要在数据元素的存储位置和它的关键字(可用 key 表示)之间建立一个确定的对应关系,使每个关键字和散列表中一个唯一的存储位置相对应。因此在查找时,只要根据这个对应关系找到给定关键字在散列表中的位置即可。这种对应关系被称为散列函数(可用 h(key)表示)。

用的构造散列函数的方法有:

(1)直接定址法: 取关键字或关键字的某个线性函数值为散列地址。即:h(key) = key 或 h(key) = a * key + b,其中 a 和 b 为常数。

(2)数字分析法

(3)平方取值法: 取关键字平方后的中间几位为散列地址。

(4)折叠法:将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为散列地址。

(5)除留余数法:取关键字被某个不大于散列表表长 m 的数 p 除后所得的余数为散列地址,即:h(key) = key MOD p p ≤ m

(6)随机数法:选择一个随机函数,取关键字的随机函数值为它的散列地址,即:h(key) = random(key)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣日记1.11-【二叉树篇】450. 删除二叉搜索树中的节点

力扣日记:【二叉树篇】450. 删除二叉搜索树中的节点 日期:2024.1.11 参考:代码随想录、力扣 450. 删除二叉搜索树中的节点 题目描述 难度:中等 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key…

Docker的介绍及安装基本操作命令

前言 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱…

Win系统搭建Elasticsearch实现公网远程访问本地服务

文章目录 系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎,它提供了一个分布式、多…

【libpcap】获取报文pcap的ns级别的时间戳

1.安装libpcap 首先&#xff0c;下载最新的 libpcap 源代码。你可以从 tcpdump.org 获取最新版本 1 解压下载的libpcap tar -zxvf libpcap-version.tar.gz 2 进入解压目录进行安装 cd libpcap-version ./configure make sudo make install2 解析报文时间戳 #include <pca…

全自动网页生成系统网站源码重构版

源码优点: 所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 免费制作 为用户使用方便考虑&#xff0c;全自动网页制作系统无需繁琐的注册与登入&#xff0c;直…

42 智能指针 auto_ptr, unique_ptr,shared_ptr,weak_ptr 整理

都是类模版 都不用开发者自己delete 指针。这是因为智能指针有自己管理指向对象的能力&#xff0c;包括释放指向的内存&#xff0c;因此开发者不要自己释放。 auto_ptr, &#xff08;废弃&#xff09;C98 已经被弃用&#xff0c;替代方案是unique_ptr. 被弃用的原因: 1.不能…

电脑桌面文件在c盘哪个文件夹里

在使用Windows电脑的时候&#xff0c;我们经常会听到&#xff0c;在桌面创建快捷方式&#xff0c;以便快速打开软件&#xff0c;或者在将文件保存在桌面&#xff0c;可以快速找到文件&#xff0c;那么这个电脑桌面具体是指的哪一个文件夹呢&#xff1f;如何将其他盘的文件夹在桌…

NVIDIA GPU 与服务器型号匹配查询

NVIDIA GPU 与服务器型号匹配查询 1. Qualified System Catalog (认证服务器目录)2. NVIDIA L40S2.1. NVIDIA L40S GPU Specifications References 1. Qualified System Catalog (认证服务器目录) https://www.nvidia.cn/data-center/data-center-gpus/qualified-system-catal…

Fenwick Tree——树状数组

问题陈述&#xff1a; 你得到一个长度为 N 的数组为 a0,a1,a2……an-1。处理以下类型的查询&#xff0c;一共有 Q 次查询。 0 p x : ap⬅ap x 1 l r : 打印 ai ( il 到 ir-1 的 ai 之和) 约束&#xff1a; 1 ≤ N,Q ≤ 500000 0 ≤ ai,x ≤ 1e9 0 ≤ p < N 0 ≤ li <…

2024开网店选择哪个平台?有经验就做视频号,没经验就做抖店

我是王路飞。 如今整体大环境都不怎么样的背景下&#xff0c;只有电商行业一直在蓬勃发展。 一方面是收到科技互联网的发展影响&#xff0c;短视频、直播带货等等都在推动这电商行业的转型&#xff1b; 另一方面也是人们消费观念的改观&#xff0c;从限制性较强的线下转移到…

基础_函数_日期函数

常用的日期函数如下&#xff1a;

纯前端 —— 200行JS代码、实现导出Excel、支持DIY样式,纵横合并

前期回顾 Vue3 TS Element-Plus 封装Tree组件 《亲测可用》_vue3ts 组件封装-CSDN博客https://blog.csdn.net/m0_57904695/article/details/131664157?spm1001.2014.3001.5501 目录 具体思路&#xff1a; 1. 准备HTML结构 2. 定义CSS样式 3. 初始化表格数据 4. 创建表…

Vs2019创建c文件

每一个人都是小白开始学习的&#xff0c;学长本身在开始学习计算机编程以前&#xff0c;也是对编程语言畏之如虎&#xff0c;一头雾水。成长都是有规律的&#xff0c;&#xff0c;都是从不会到会&#xff0c;再从会到熟练。如果要问我为什么&#xff0c;唯有多练习耳&#xff0…

UG装配-动态干涉检查

如果设计的产品有运动部件&#xff0c;除了做静态干涉检查外&#xff0c;通常还要做动态干涉检查 动态检查可以使用如下命令&#xff1a;移动组件&#xff0c;序列 在动态干涉检查前&#xff0c;先装配好组件&#xff0c;并且是可运动状态 在使用移动组件命令对运动部件进行…

android studio使用总结

gradle是项目构建的工具&#xff0c;在gradle-wrapper.properties这个文件中设置&#xff0c; 然后就会下载相应版本的安装包到这个路径C:\Users\ly.gradle\wrapper\dists&#xff0c;例如这里是7.0.2&#xff0c; gradle和studio中的jdk版本需要对应&#xff0c;否则无法构建项…

C++学习笔记(三十五):c++ 函数指针及lambda表达式

本节介绍c函数指针。在一些源码中经常能看到c函数指针&#xff0c;但之前一直觉着这一块比较复杂&#xff0c;就一直没去仔细研究&#xff0c;终于有时间去仔细研究这一块内容了。 c风格的函数指针 函数指针是指将一个函数赋值给一个变量的方法&#xff0c;可以将函数作为一个参…

基础_函数_流程函数

流程函数也是很常用的一类函数&#xff0c;可以在SQL语句中实现条件筛选&#xff0c;从而提高语句效率.

一天一个设计模式---桥接模式

概念 桥接器模式是一种结构型设计模式&#xff0c;旨在将抽象部分与实现部分分离&#xff0c;使它们可以独立变化而不相互影响。桥接器模式通过创建一个桥接接口&#xff0c;连接抽象和实现&#xff0c;从而使两者可以独立演化。 具体内容 桥接器模式通常包括以下几个要素&a…

文件夹重命名方法:英文文件夹名批量翻译成中文,高效管理文件夹

随着全球化的发展&#xff0c;经常要处理英文文件夹名的文件管理任务。要将这些英文文件夹名翻译成中文。如果一个个手动翻译和重命名不仅效率低下&#xff0c;还容易出错。下面一起看云炫文件管理器如何批量翻译重命名英文文件夹的方法&#xff0c;提高文件管理的效率。 文件…

Vue 中修改 Element 组件的 下拉菜单(Dropdown) 的样式

Vue 中修改 Element 组件的 下拉菜单(Dropdown) 的样式 今天在项目中碰到一个 UI 改造的需求&#xff0c;需要根据设计图把页面升级成 UI 设计师提供的设计图样式。 到最后页面改造完了&#xff0c;但是 UI 提供的下拉菜单样式全部是黑色半透明的&#xff0c;只能硬着头皮改了。…