数据结构与算法(5)——栈和哈希表

简介: 栈和哈希表

特点:先进后出(浏览器后退功能)

类别 时间复杂度
访问 O(1)(访问栈顶元素)
搜索 O(N)
插入 O(1)
删除 O(1)

栈的常用操作:创建栈、添加元素、查看栈顶元素(即将出栈的元素)、删除栈顶元素(即将出栈的元素)、栈的长度、栈是否为空、遍历栈(边删除栈顶元素边遍历)

练习题:力扣20 496

python栈常用操作

#1.创建栈
stack=[]

#2.添加元素 O(1)
stack.append(1)

#3.获取栈顶元素 O(1)
stack[-1]

#4.删除栈顶元素 O(1)
temp=stack.pop()#返回删除的元素

#5.栈的大小 O(1)
len(stack)

#6.栈是否为空 O(1)
len(stack)==0

#7.栈的遍历 O(N) 边删除边遍历
while len(stack)>0:
    temp=stack.pop()
    print(temp)

哈希表(散列表)

key:value 键值对 python中字典

key->哈希函数->内存地址->key/value放在对应的内存地址

哈希碰撞:两个不同的key通过同一个哈希函数得到同样的内存地址

类型 时间复杂度
访问 不存在
搜索 O(1) 碰撞:O(k),碰撞元素的个数
插入 O(1)
删除 O(1)

哈希表常用操作:创建哈希表、添加元素、删除元素、修改元素、获取Key的值、检查key是否存在、哈希表长度、哈希表是否还有元素

练习题:力扣217 389 496

python的哈希表常用操作

#1.创建哈希表
#用数组创建
hashTable=['']*4
#用字典创建
mapping={}

#2.添加元素 O(1)
hashTable[1]='whc'
hashTable[2]='xn'
hashTable[3]='gyj'
mapping[1]='whc'
mapping[2]='xn'

#3.修改元素 O(1) 直接访问对应元素地址
hashTable[1]='bs'

#4.删除元素 O(1)
hashTable[1]=''#数组创建时
mapping.pop(1)#将key为1的键值对直接删除
del mapping[1]

#5.获取元素 O(1)
hashTable[3]
mapping[3]

#6.检查key是否存在 O(1)
3 in mapping#返回true or false

#7.哈希表的长度,判断是否还有元素 O(1)
len(mapping)
len(mapping==0)
相关文章
|
11天前
|
算法 Java 数据库
数据结构与算法学习十五:哈希表
这篇文章详细介绍了哈希表的概念、应用实例、实现思路,并提供了使用Java实现的哈希表代码。
31 0
数据结构与算法学习十五:哈希表
|
8天前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
29 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
11天前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
16 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
11天前
初步认识栈和队列
初步认识栈和队列
35 10
|
5天前
数据结构(栈与列队)
数据结构(栈与列队)
11 1
|
11天前
|
算法
数据结构与算法二:栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式
这篇文章讲解了栈的基本概念及其应用,并详细介绍了中缀表达式转换为后缀表达式的算法和实现步骤。
28 3
|
10天前
|
存储 JavaScript 前端开发
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
37 1
|
13天前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
25 2
|
6天前
【数据结构】-- 栈和队列
【数据结构】-- 栈和队列
9 0
|
11天前
探索顺序结构:栈的实现方式
探索顺序结构:栈的实现方式