![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 89
twlkyao
AlienTech for better life
展开
-
后缀数组求最长重复子串
问题描述给定一个字符串,求出其最长重复子串例如:abcdabcd最长重复子串是 abcd,最长重复子串可以重叠例如:abcdabcda,这时最长重复子串是 abcda,中间的 a 是被重叠的。直观的解法是,首先检测长度为 n - 1 的字符串情况,如果不存在重复则检测 n - 2, 一直递减下去,直到 1 。这种方法的时间复杂度是 O(N * N * N),其中包括三部转载 2013-06-16 09:40:29 · 1006 阅读 · 0 评论 -
C/C++ 排序之一(冒泡排序、选择排序、交换排序)
冒泡排序、选择排序、交换排序1、冒泡排序bubble_sort[cpp] view plaincopy#include void bubble_sort(int *begin, int *end) { int *i, *j; for(i = end; i >= begin; i --)转载 2013-08-22 10:02:02 · 1239 阅读 · 0 评论 -
已知二叉树后序遍历和中序遍历,求前序遍历
已知二叉树后序遍历序列是DBCEFGHA,中序遍历序列EDCBAHFG,它的前序遍历的序列是?麻烦再画下这二叉树. 后续遍历的顺序是左右根,中序遍历的顺序是左根右 这点应该懂吧 由后续访问序列可以看出最后一个被访问的必定是这个树的根 而中序遍历的序列可以看出,一棵树当根确定后,在根前面被访问的是他的左子树,后边的是他的右子树元素 弄懂了上边两点就开始做题吧 由后序遍历序转载 2013-08-16 09:14:58 · 1682 阅读 · 0 评论 -
C/C++中的联合体union及CPU大小端判定
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:View Codeunion类型是共享内存的,以size最大的结构作为自己的大小,这样的话,myun这个结构就包含u这个结构体,而大小也等于u这个结转载 2013-09-11 20:37:09 · 1537 阅读 · 0 评论 -
Java中hashCode()的作用
1.hashcode是用来查找的,假如你学过数据结构就应该知道,在查找和排序这一章有 例如内存中有这样的位置 0 1 2 3 4 5 6 7 而我有个类,这个类有个字段叫ID,我要把这个类存放在以上8个位置之一,假如不用hashcode而任意存放,那么当查找时就需要到这八个位置里挨个去找,或者用二分法一类的算法。 但假如用hashcode那就会使效率提高很多。 我们这个类中有个转载 2013-10-09 20:25:44 · 1101 阅读 · 0 评论 -
数据结构之【图】部分复习题
第六章 图一、选择题1.图中有关路径的定义是(A )。A.由顶点和相邻顶点序偶构成的边所形成的序列 B.由不同顶点所形成的序列C.由不同边所形成的序列 D.上述定义都不是2.设无向图的顶点个数为n,则该图最多有(B)条边。A.n-1 B.n(n-1)/2 C. n转载 2013-09-29 09:47:02 · 7164 阅读 · 0 评论 -
Java中的ArrayList 、List、LinkedList、Collection关系详解
一、基础介绍(Set、List、Map)Set(集):集合中的元素不按特定方式排序,并且没有重复对象。他的有些实现类能对集合中的对象按特定方式排序。List(列表):集合中的元素按索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。他的有些实现类能对集合中的键对象转载 2013-10-16 20:07:59 · 1765 阅读 · 0 评论 -
寻找一个整数二进制表示中1的个数
AlienTech for better life!~原创 2014-04-14 20:14:47 · 2439 阅读 · 0 评论 -
剪刀石头布——杭电携程编程大赛 (预赛第二场)
AlienTech for better life!~原创 2014-04-11 21:48:17 · 2715 阅读 · 0 评论 -
各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n转载 2013-08-21 19:47:02 · 981 阅读 · 0 评论 -
数字转字符串
一道面试题:不使用库函数,实现int StrToInt(const char* string);难点:(考虑尽量全面)1、空指针时,处理情况2、输入不合法时,处理情况3、溢出时处理情况测试用例:1、+7892、-123、7894、12-475、空6、超出int范围的一个数代码:[cpp] view plaincopyp转载 2013-06-25 15:38:06 · 870 阅读 · 0 评论 -
求二叉树的镜像
就是对二叉树及其子树,交换左右子树。这种就是先序遍历的变种。递归版本:01voidmirror(structNode* root)02{03 if(root==NULL)04转载 2013-06-25 10:01:16 · 927 阅读 · 0 评论 -
表达式树与树
表达式到表达式树的转换,以及对表达式树的遍历得到表达式的前缀、中缀和后缀表达式对于表达式(a+b)*(c*(d+e))的表达式树为:原文地址:点击打开链接转载 2013-06-16 09:58:51 · 959 阅读 · 0 评论 -
合并有序链表
[cpp] view plaincopy//节点数据结构 typedef struct LNode { int data; struct LNode *next; }LNode,*LinkList; LinkList merge(LinkList a,LinkList b) {转载 2013-06-16 09:35:52 · 923 阅读 · 0 评论 -
后缀数组
后缀数组是字符串处理的一个重要工具。它由原字符串的所有后缀的字典排序而得,具有较高的检索效率。字符串aabaaaab的所有后缀目录 [隐藏] 1 基本概念2 倍增算法3 线性时间复杂度算法3.1 KS033.2 KA033.2.1 基本观察3.2.2 算法3.2.3 子问题字符集构造3.2.4转载 2013-06-16 09:42:49 · 1132 阅读 · 0 评论 -
可重入和不可重入
这种情况出现在多任务系统当中,在任务执行期间捕捉到信号并对其进行处理时,进程正在执行的指令序列就被信号处理程序临时中断。如果从信号处理程序返回,则继续执行进程断点处的正常指令序列,从重新恢复到断点重新执行的过程中,函数所依赖的环境没有发生改变,就说这个函数是可重入的,反之就是不可重入的。众所周知,在进程中断期间,系统会保存和恢复进程的上下文,然而恢复的上下文仅限于返回地址,cpu寄存器等之类的转载 2013-06-16 10:02:44 · 721 阅读 · 0 评论 -
二叉树的应用
1. 实验目的:掌握二叉树的链式存储结构和常用算法。利用哈夫曼树设计最优压缩编码。2. 实验内容:1) 编写函数,实现建立哈夫曼树和显示哈夫曼树的功能。2) 编写函数,实现生成哈夫曼编码的功能。3) 编写主函数,从终端输入一段英文文本;统计各个字符出现的频率,然后构建哈夫曼树并求出对应的哈夫曼编码;显示哈夫曼树和哈夫曼编码。选做内容:修改程序,选择实现以下功转载 2013-06-16 10:04:29 · 1094 阅读 · 0 评论 -
二叉树的建立、节点查找以及节点删除C和C++实现
程序是建立一颗二叉排序树,查找节点找到了返回其父节点,失败的时候返回NULL,删除节点分为四种情况:1、左子树和右子树都为空;2、左子树为空,右子树不为空;3、左子树不为空,右子树为空;4、左子树和右子树都不为空。C语言版本(利用结构体实现):[cpp] view plaincopyprint?#include #includ转载 2013-06-23 23:47:19 · 3865 阅读 · 0 评论 -
二叉树的建立与遍历
一、概述树是一种重要的数据结构,而二叉树则是树中重要的一类二叉树是特殊的树,最明显的特点在于,每个结点都有左子结点和右子结点,且二者有序不能随意互换。二叉树有两种特殊形式:满二叉树和完全二叉树,而且都具有一定的性质,具体参照偶之前写过《堆和堆排序》的文章二叉树的重点是结点,通常存在二叉链接和三叉链接两种结点,区别在于三叉链接多了一个指向父结点的指针,因而三叉转载 2013-06-23 23:35:54 · 1217 阅读 · 0 评论 -
剑指offer面试题19二叉树的镜像和二叉树的前中后遍历递归和非递归算法
#include#include#include#include#includeusing namespace std;struct BinaryTreeNode{ int data; BinaryTreeNode * leftchild; BinaryTreeNode * rightchild; BinaryTreeNode(int t)转载 2013-06-25 09:57:24 · 956 阅读 · 0 评论 -
位图像素的颜色——杭电携程编程大赛 (预赛第二场)
AlienTech for better life!~原创 2014-04-11 21:40:00 · 2686 阅读 · 0 评论