数据结构
Alexander_Frank
本人初来乍到的小白一个,希望各路大神多多提点帮助。
对数据库,网页开发,C++和数据结构很感兴趣。
希望在分享经验的同时也能够得到大家的提点。
展开
-
B树及其变种
B*树: B+树: B树:转载 2016-06-10 14:34:11 · 360 阅读 · 0 评论 -
单链表的翻转
单链表的翻转方式 大概有这几种: reverse1.新建一个单链表把原链表的内容逐个头插法插入新链表中.从而实现了链表的翻转. reverse2.新建一个数组把原链表的内容copy到数组和新链表中.从而实现了链表的翻转. reverse3.一次遍历单链表,原地将原链表翻转 评注: reverse1 在实现的时候,也只是遍历了一转载 2016-09-02 13:52:18 · 581 阅读 · 0 评论 -
两个排序后数组中是否存在相同数字
因为两个数组都是排好序的。所以只要一次遍历就行了。首先设两个下标,分别初始化为两个数组的起始地址,依次向前推进。推进的规则是比较两个数组中的数字,小的那个数组的下标向前推进一步,直到任何一个数组的下标到达数组末尾时,如果这时还没碰到相同的数字,说明数组中没有相同的数字。 [cpp] view plain copy bool findCommon(int转载 2016-09-02 13:59:17 · 670 阅读 · 0 评论 -
如何判断链表是否存在环和求链表中间节点
给定一个单链表,只给出头指针h: 1、如何判断是否存在环? 2、如何知道环的长度? 3、如何找出环的连接点在哪里? 4、带环链表的长度是多少? 解法: 1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。 2、对于问题2,记录下问题1的碰转载 2016-09-02 13:42:51 · 441 阅读 · 0 评论 -
最大子序和
算法一: 对这个问题,有一个相对复杂的O(NlogN)的解法,就是使用递归。如果要是求出序列的位置的话,这将是最好的算法了(因为我们后面还会有个O(N)的算法,但是不能求出最大子序列的位置)。该方法我们采用“分治策略”(divide-and-conquer)。 在我们例子中,最大子序列可能在三个地方出现,或者在左半部,或者在右半部,或者跨越输入数据的中部而占据左右两部分。前两种情况转载 2016-09-02 14:08:05 · 459 阅读 · 0 评论