
数据结构与算法
文章平均质量分 82
小胡子V
青春不老,奋斗不止
展开
-
用两个队列实现一个栈
我们通过一系列栈的压入和弹出操作来分析用两个队列模拟一个栈的过程。如图(a)所示,我们先往栈内压入一个元素A。由于两个队列现在都是空的,我们可以选择把A插入两个队列的任意一个。不妨插入queue1。接下来继续往栈内压入B、C两个元素,我们把它们都插入queue1。这个时候queue1包含3个元素A、B和C,其中A位于队列的头部,C位于队列的尾部。 现在我们考虑从栈内弹出一个元素。根据栈的后入...原创 2019-10-25 15:51:37 · 3117 阅读 · 0 评论 -
用两个栈实现一个队列
题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。template <typename T> class CQueue{public: CQueue(void); ~CQueue(void); void appendTail(const T&...原创 2019-10-25 15:16:51 · 1241 阅读 · 0 评论 -
数据结构——哈希表
哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构。也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 哈希表的做法其实很简单,就是把key通过一个固定的算法函数即所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的标,将value存储在以该数字原创 2016-12-12 11:04:51 · 1601 阅读 · 0 评论 -
数据结构——二叉树
一、树、二叉树的定义、运算和性质1、数的概念树是n个节点的有限集合T,它满足两个条件:有且仅有一个特定的称为根的节点其余的节点可以分为m个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树结点拥有的子树数称为结点的度。度为0的结点称为叶结点或终端结点;度不为0的结点称为非终端结点;度不为0的结点称为非终端结点或分支结原创 2016-12-12 10:29:45 · 1559 阅读 · 0 评论 -
数据结构——线性表(链式存储)
1、 顺序表:①需要一片连续的内存空间,成员可以随机访问,访问效率高②插入删除数据存在数据搬移的现象,效率低③存储密度高链表的特点:①不需要连续的内存空间,不能随机访问元素,访问效率低②插入删除数据不存在数据搬移的现象,效率高③存储密度比较低2、无头链表:第一个节点为数据节点,加入删除第一个节点,链表的入口发生改变,操作维护比较复原创 2016-12-07 18:27:02 · 1619 阅读 · 0 评论 -
数据结构——线性表(顺序存储)
顺序表的实现一、数据结构1. 基本概念和术语数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。数据项:一个数据元素可以由若干个数据项组成。(数据项是数据不可分割的最小单位)数据对象:是性质相同的数据元素的集合,是原创 2016-12-02 20:28:23 · 1735 阅读 · 0 评论