〖数据结构〗
文章平均质量分 92
啸傲居士
克制自己,约束自己;量化自己,把握自己。
展开
-
优先队列(堆) - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述 优先队列(堆)是允许至少下列两种操作的数据结构:Insert(插入),它的工作显而易见的,以及DeleteMin(删除最小者),它的工作是找出、返回和删除优先队列中最小的元素。 如同大多数数据结构那样,有时可能要添加一些操作,但这些添加的操作属于扩展的操作,而不属于图1所描述的基本模型。图1 优先队列的基本模型 使操作被快速执行的性质是堆序(heap ord原创 2012-04-07 11:18:23 · 17944 阅读 · 2 评论 -
栈及其应用 - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述:栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。对栈的基本操作有Push(进栈)和Pop(出栈),前者相当于插入,后者则是删除最后插入的元素。栈有时又叫做LIFO(后进先出)表。在图1中描述的模型只象征着Push是输入操作而Pop和Top是输出操作。图1 栈模型:通过Push向栈输入,通过Pop从栈输出二、实现原创 2011-12-28 22:21:39 · 3560 阅读 · 0 评论 -
AVL(Adelson-Velskii和Landis)树 - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述 AVL(Adelson-Velskii和Landis)树是带有平衡条件的二叉查找树。一颗AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1),如图1所示,只有左边的二叉查找树是AVL树。图1 两颗二叉查找树,只有左边的树是AVL树二、实现 AVL树中的每个节点都有一个平衡因子(Balance Facto原创 2012-04-01 22:11:21 · 2464 阅读 · 2 评论 -
队列 - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述:像栈一样,队列(queue)也是表。然而,使用队列时插入在一端进行而删除在另一端进行。队列的基本操作是Enqueue(入队),它是在表的末端(叫做队尾(rear)插入一个元素,还有Dequeue(出队),它是删除(或返回)在表的开头(叫做队头(front)的元素。如图1所示显示一个队列的抽象模型。图1 队列模型二、实现如同栈的情形一样,原创 2012-01-03 19:11:53 · 22408 阅读 · 3 评论 -
散列 - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述 散列表(hash table)ADT只支持二叉查找树所允许的一部分操作,散列表的实现常常叫做散列(hashing)。散列是一种以常数平均时间执行插入、删除和查找的技术。但是,那些需要元素间任何排序信息的操作将不会得到有效的支持。二、实现 理想的散列表数据结构只不过是一个包含有关关键字的具有固定大小的数组。典型情况下,一个关键字就是一个带有相关值的字符串。我们把表的大小记作原创 2012-04-06 22:26:49 · 6733 阅读 · 0 评论 -
二叉查找树 - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述 二叉树的一个重要的应用是它们在查找中的使用。使二叉树成为查找树的性质是,对于树中的每个结点X,它的左子树中所有关键字值小于X的关键值,而它的右子树中所有关键字大于X的关键值。在图1中,左边的树是二叉查找树,但右边的树则不是(想一想为什么)。图1 两棵二叉树(只有左边的树是查找树)二、实现 因为二叉树最多有两个原创 2012-04-01 19:24:39 · 5122 阅读 · 4 评论 -
排序 - C语言实现(摘自数据结构与算法分析C语言描述))
一、概述 根据是否使用外存,排序可以分为内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。 内排序的方法有许多种,按所采用策略的不同,可归纳为五类:插入排序、选择排序、交换排序原创 2012-04-07 23:35:08 · 2795 阅读 · 0 评论