这篇文章主要是根据《数据结构与算法分析--C语言描述》一书的链表章节内容所写,该书作者给出了链表ADT的一些方法,但是并没有给出所有方法的实现。在学习的过程中将练习的代码记录在文章中,并添加了一些在测试中需要的函数,因此可能看起来会有点乱。。。 首先,链表作为一种简单的线性数据结构,主要特征就是“节 ...
分类:
编程语言 时间:
2017-04-30 14:07:49
阅读次数:
254
1.堆栈是一种线性数据结构,先进后出。 2.应用一:在程序中匹配分隔符(在 java程序中读取一个字符,如果它是左分隔符就将他压入堆栈。如果它是右分隔符,就将他和栈中弹出的一个分隔符相比较,如果匹配,就继续处理,否则就发出了一个错误信号,停止处理) 应用二:执行一些非常大的数字的加法。 应用三:ja ...
分类:
编程语言 时间:
2017-04-17 21:59:42
阅读次数:
146
转载请注明出处:http://www.cnblogs.com/kirai/ 作者:Kirai 零.问题的提出 最近希望在分布式平台上实现一个AC自动机,但是如何在这样的分布式平台上表示这样的非线性数据结构就难住我了。因为一直在使用RDD提供的一些基本的操作,没有需要什么复杂的操作。最近的想法特别多, ...
分类:
编程语言 时间:
2017-04-16 16:51:38
阅读次数:
264
链表是一种零散的线性数据结构。链表建立、插入、删除、查找、遍历等基本操作。链表的插入删除的时间复杂度为$O(1)$,而查找的时间复杂度为$O(n)$。 按照组织的方式,链表可以分为单链表,双链表,环形链表。 单链表的节点只包括数据域和一个指针域,其中指针域指向其后继节点,因此只能单向访问,不能够访问 ...
分类:
其他好文 时间:
2017-04-12 19:49:05
阅读次数:
182
树是一类重要的非线性数据结构,是以分支关系定义的层次结构 定义: 树(tree)是n(n>0)个结点的有限集T,其中: 有且仅有一个特定的结点,称为树的根(root) 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的子树(subtr ...
分类:
其他好文 时间:
2017-04-08 22:14:46
阅读次数:
170
图是什么 图,顾名思义,就是一张大大的网,网中的每个节点都与另外一个节点直接或者间接的联系。互联网就是一个大大的图,从A到B到C经过的路由,就是图的搜索算法。 要给图下一个定义,那就是在众多离散节点中可以产生回路的数据结构。比之线性数据结构的单线特性,树形结构的多路分叉特性,图的最大特点就是有回路的 ...
分类:
其他好文 时间:
2017-04-05 14:57:39
阅读次数:
247
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2 ...
分类:
编程语言 时间:
2017-03-30 17:22:55
阅读次数:
266
栈是一种只能从一端访问的线性数据结构,栈是一种后进先出的数据结构 ...
分类:
编程语言 时间:
2017-03-15 22:36:27
阅读次数:
185
队列是一种线性数据结构,是一种运算受限的线性表,只允许在队尾插入,在队头删除。运算规则是先进先出。恰好和栈相反。栈是先进后出。因为栈只在栈顶做删除和插入。 队列按照存储结构可以分为顺序队列和链式队列。顺序队列采用数组实现,链式队列采用节点的方式实现。 //顺序队列 //链式队列 ...
分类:
编程语言 时间:
2017-03-08 21:18:15
阅读次数:
178
引言 栈(stack)是一种被广泛使用的线性数据结构,它只允许在表的一端进行插入或删除操作,因而栈也可以被称作为操作受限的线性表 。在栈中,允许插入或删除的一端称作栈顶(top)不允许插入和删除的另一端称作栈底(bottom); 示意图如下: 此文借助单链表简单地实现栈及其基本操作。 代码如下: t ...
分类:
其他好文 时间:
2017-02-19 18:04:02
阅读次数:
207