跳至主要內容
哈希表

哈希表(Hash Table),也称为散列表,是一种数据结构,它可以提供非常快速的数据插入和查找操作。哈希表通过一个称为哈希函数(Hash Function)的算法,将键(Key)转换为数组索引,从而能够快速定位到数据的存储位置。

在哈希表中,每个键值对(Key-Value Pair)都被哈希函数映射到表中的一个位置,以便快速访问。但是,由于不同的键可能会被映射到同一个位置,这就产生了所谓的哈希冲突(Hash Collision)。为了解决冲突,有几种方法可以使用,如链地址法(Chaining)和开放地址法(Open Addressing)。

链地址法是在冲突发生的索引处使用链表来存储所有映射到该索引的元素。而开放地址法则是寻找另一个空闲的位置来存储冲突的元素。


MistyStar...大约 5 分钟数据结构

栈(Stack)是一种只允许在一端进行插入或删除操作的线性表。这种结构具有后进先出(Last In First Out, LIFO)的特性,意味着最后插入的元素将是第一个被删除的。在栈中,插入和删除操作通常发生在同一端,称为栈顶,而另一端则被称为栈底。

栈的基本操作包括:

  • 初始化(InitStack):创建一个空栈。
  • 判空(Empty):检查栈是否为空。
  • 进栈(Push):在栈顶添加一个元素。
  • 出栈(Pop):移除栈顶的元素。
  • 读栈顶元素(GetTop):获取栈顶元素的值,但不移除它。
  • 销毁栈(DestroyStack):移除栈中的所有元素,并释放内存。

MistyStar...大约 1 分钟数据结构
链表

C++ STL 之 List

一、list 的介绍

list 是 STL 中的一个序列容器,实现的是双向链表,每个元素都有两个指针,分别指向元素的前驱和后继。

list 不需要指定内存大小,因为他存储在不连续的内存空间中,并由指针将他们连接在一起。

由于链表的特点,不能进行内部的随机访问,无法通过位置来访问元素,即不支持[ ] 操作符和vector.at() 操作,必须逐个遍历,可以通过开始元素或者最后一个元素遍历,它的查找要在O(n)的时间才能完成。但它允许序列快速在任意位置进行插入和删除操作作,包括在两边的pop()和push()操作。


MistyStar...大约 6 分钟数据结构
队列

队列是一种特殊的线性表,它只允许在表的一端(队尾)进行插入操作,而在表的另一端(队头)进行删除操作。队列遵循先进先出(First In First Out, FIFO)的原则,即先进入队列的元素将会最先被删除。在队列中,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。

队列可以通过多种方式实现,包括顺序存储结构(如数组)和链式存储结构(如链表)。顺序队列使用一组连续的存储单元按顺序存放队列元素,而链队列则由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

(1) 【数据结构】队列(顺序队列、循环队列、链队列)_顺序队列的定义-CSDN博客. https://blog.csdn.net/Jacky_Feng/article/details/108595654. (2) 【数据结构入门】队列(Queue)详解(定义、销毁、入队、出队等)| 图解数据结构,超详细哦~-CSDN博客. https://blog.csdn.net/weixin_48025315/article/details/120277050. (3) 队列的定义-CSDN博客. https://blog.csdn.net/ZCMUCZX/article/details/80920876.


MistyStar...大约 3 分钟数据结构