栈、队列、哈希表的特性

栈是一种特殊的线性表,它只在线性表的一端进行插入和删除操作。栈中允许插入、删除的这一端称为栈顶,另一个固定端称为栈底。当表中没有元素时称为空栈。其特点是先进后出或后进先出。

队列是一种只允许在标的一端插入,在另一端删除的存取首先得线性表。允许插入的一端称为队尾,允许删除的一端称为对头;不含任何数据元素的队列称为空队列。其特点是先进先出。

哈希表是一种高效的数据结构。它的最大优点就是把数据存储和查找所消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多、程序运行时间控制的越来越短的情况下,用空间换时间的做法还是值得的。另外,哈希表编码实现起来比较容易也是它的优点之一。

时间: 2024-08-03 07:11:46

栈、队列、哈希表的特性的相关文章

普通集合和泛型集合的区别,哈希表和字典表的区别,队列和堆栈的区别以及堆和栈的区别。

普通集合和泛型集合的区别: 泛型集合与传统集合相比 类型更安全. 泛型集合无需装箱拆箱操作. 泛型的重要性. 泛型是未来五年的主流技术 ... 通常情况下,建议您使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员.此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于从非泛型基集合类型派生的类型),因为使用泛型时不必对元素进行装箱. 下面的泛型类型对应于现有的集合类型: List 是对应于 ArrayList 的泛型类. Di

2017年11月4日 vs类和结构的区别&哈希表&队列集合&栈集合&函数

类和结构的区别 类: 类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存 类有构造和析构函数 类可以继承和被继承 结构: 结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋值将分配产生一个新的对象. 结构没有构造函数,但可以添加.结构没有析构函数 结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口 //哈希表 //不规定长度 不规定类型 不规定建类型 //Hashtable j = new Hashtable(); //

哈希表,队列集合,栈集合,自定义函数

1  1)哈希表 定义:(不规定长度,不规定类型,不规定键的类型) Hashtable  ht=new hashtable(); (点击小灯泡用using system.collection) 2)赋值: (1): ht['a']=1; ht[0]="b"; ht["b"]='c'; (2) : ht.Add(1,d);               :相当于ht[1]=d 哈希表遍历 : 1)        foreach(var x in ht.keys ) {

C# 哈希表,队列,栈

哈希表- 不规定长度,不规定类型,不规定键的类型 Hashtable ht = new Hashtable(); ht['a'] = 1; ht[0] = "b"; ht["b"] = 'c'; ht[1] = "d"; //ht.Add(1, "d"); ht[1] = "x"; foreach (var x in ht.Keys)       keys,键    value,值 { Console.Wr

Stack集合 Queue队列集合 Hashtable哈希表

Stack集合 干草堆集合 栈集合 栈;stack,先进后出,一个一个赋值,一个一个取值,安装顺序来. 属性和方法 实例化 初始化 Stack st = new Stack(); 添加元素 1 个数 2 Console.WriteLine(st.Count); 3 只要使用一次pop方法,就会从最后一个元素开始排除 弹出 4 Console.WriteLine(st.Pop()); 5 Console.WriteLine(st.Count); 6 只想查看不弹出 7 Console.WriteL

58. C# -- 集合(动态数组,哈希表,排序列表,堆栈,队列,点阵列)

一.先来说说数组的不足(也可以说集合与数组的区别): 1.数组是固定大小的,不能伸缩.虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化.随后以前的数组就废弃!而集合却是可变长的 2.数组要声明元素的类型,集合类的元素类型却是object. 3.数组可读可写不能声明只读数组.集合类可以提供ReadOnly方法以只读方式使用集合. 4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用.集合也是

C# 哈希表&列队&栈

哈希表://不规定类型,不规定长度,不规定键值 Hashtable ht = new Hashtable();  //定义 ht[1] = 1; ht['a'] = "abc"; ht["ab"] = 'a'; ht[3.14] = 1.14; ht.Add(2, "qwerty");  //添加元素 ht.Remove('a');  //删除元素 foreach (var x in ht.Values) { Console.WriteLine(

<数据结构与算法分析 C++描述> 表/栈/队列

这一章主要内容: * 抽象数据类型(ADT)的概念 * 实现表/栈/队列 * 了解这三个数据结构的应用场景 1. ADT ADT: abstract data type, 是抽象的数学模型,在该模型上定义了一系列的操作.使用它的人,不需要了解它的存储方式,只关心它的逻辑特征.可以使用三元组的方法来表示(D,S,P),D是数据对象,S是数据之间的关系,P是对数据的基本操作,具体介绍,可以参考帖子:点击打开链接 2. 表ADT 表的数据自然是单个元素,而元素之间的关系是前驱与后继,操作包括查找/插入

[leetcode 40. 组合总和 II] 不排序使用哈希表+dfs递归 vs 排序栈+回溯

题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. 说明: 所有数字(包括目标数)都是正整数. 解集不能包含重复的组合. 示例 1: 输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6] ] 示例 2: 输入