- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 堆和栈的区别
堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态
2013-08-30 09:16:17 423
转载 KMP算法详解
1.BF(Brute-Force)算法 Brute-Force算法的基本思想是: 1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。 2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s 中的位置就是t
2013-08-29 15:21:49 431
原创 基本数据结构之队列
一、基本数据结构之队列 队列作为计算机系统一种非常常见的数据结构被大家所熟知。同堆栈一样,队列也是有插入和删除只能在限定段的线性表。 队列是一种FIFO(First In First Out)的线性表。具体通常用链表或数组来实现。队列只允许在后端(rear)进行插入操作,在前段(front)进行删除操作。 队列的操作方式和堆栈类似,唯一的区别
2013-08-28 16:36:38 543
原创 基本数据结构只二叉树
1、二叉树二叉树,顾名思义,有两个树杈,说的更书面一些,有两颗子树,称为左子树和右子树,左子树和右子树分别是二叉树,二叉树是递归定义的,所以二叉树的一些操作都可以用递归的方式来解决。下面介绍下根据二叉树的定义推出的一些二叉树的基本性质:1)每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。2)二叉树的第i层至多有个 结点3)对任何一
2013-08-28 16:32:04 627
转载 KMP算法
1.作用用于字符串匹配,是一种改进的方法2.原理KMP算法的关键是根据给定的模式串Pattern,定义一个next数组。next数组包含了模式串本身局部匹配的信息,即保存中间子字符串从字符串开头匹配的最长公共前缀信息。3.操作过程假设在模式匹配的进程中,执行S[i]和P[j]的匹配检查。若S[i]=P[j],则继续检查S[i+1]和P[j+1]是否匹配。若S[i]即执行j=ne
2013-08-28 15:35:33 467
转载 KMP算法小结 2
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如
2013-08-28 15:30:28 351
转载 KMP算法小结
主要看了这里,感觉讲的十分的不错,总结一下。首先声明要搜索的串为S,设长度为n,要匹配的串为M,设长度为m.先考虑暴力的算法,暴力的算法是遍历S的每一个字符,然后从这个字符开始和M串进行匹配。时间复杂度为O(nm).怎么在此基础上进行优化?假设现在从某个位置(设为s)开始和M串进行匹配,如果匹配不成功,暴力算法是从这个位置的下一个位置(s+1)进行匹配,直观上来说就是匹配的字符串向后“
2013-08-28 15:27:54 381
转载 线性表的顺序表示
线性表的顺序表示终于马马虎虎的勉强写完了,写的不是很完整,开始时比较不理解就是动态分配内存,现在懂一点点了,数据结构落下很多了,这几天要好好整了[cpp] view plaincopyprint?class=cpp name="code" sizcache="4" sizset="2">class=cpp name="code">"FONT-SIZE: 24
2013-08-28 15:11:19 507
转载 顺序栈的基本操作实现
这些都是头函数里的内容,也就是保存之后,可以直接对其进行调用。其中的一个变量stacklen是用来记录栈的长度的,其实,这个变量可以不要,只是刚开始写时给它加上了,所以就按这样写了,感觉跟顺序表的写法差不多[cpp] view plaincopyprint?"FONT-SIZE: 24px">#include #include #include
2013-08-28 15:01:43 983
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人