数据结构
文章平均质量分 77
q1239678315
这个作者很懒,什么都没留下…
展开
-
【数据结构】单链表的倒置
关于单链表的倒置: 在面试过程中,笔试中会考到许多数据结构的面试题,我们来看一个不是很难的单链表逆置,许多笔试题中都有可能出现这个单链表的逆置。 在这些题中,往往是不存在哨兵位,而给的是一个头指针。什么是哨兵位呢。 哨兵位:创建一个头结点,头结点中不存任何数据,将头结点的_next指向单链表中的第一个数据节点。 这样也许会带来很多便利,面试中往往是不给予头结点的。原创 2016-09-26 18:04:32 · 5660 阅读 · 1 评论 -
位图:源代码
#include using namespace std;#include class BitMap{public: BitMap() :_size(0) {} BitMap(size_t len) :_size(0) { size_t size = len/32+1; _array.resize(size, 0); } void Set(size_t原创 2016-09-26 18:08:03 · 694 阅读 · 0 评论 -
树:二叉树的公共祖父节点
1.如果这棵二叉树是二叉查找树,那么记录根节点到x和y节点的路径问题变得很简单,借助于二叉查找树的性质,借助BST的查找过程,很简单便可以做到。void find1(TreeNode* root,TreeNode* p,vector &v) { if(root == p) { v.push_back(root); ret原创 2016-09-26 18:07:55 · 1081 阅读 · 0 评论 -
树:二叉树的前序/中序/后序/层次递归
在二叉树的应用中,很多使用二叉树的操作都是通过遍历来进行节点的修改。所以对于遍历而言是学习二叉树的要点,今天就来总结一下。假设二叉树的结构为:templatestruct BinaryTreeNode{ BinaryTreeNode(const T& x) :_data(x) ,_left(NULL) ,_right(NULL) {} T _data; BinaryTre原创 2016-09-26 18:07:52 · 546 阅读 · 0 评论 -
【数据结构】复杂链表的复制
实现复杂链表的复制。 因为复杂链表中每个节点都有一个指向任意节点的指针。所以在确定这个链表的复制的时候。我们需要进行空间来换取时间上的效率。然后我们可以将链表复制项结合在拆分。 思路就这样。 我直接给出代码:#pragma once#include #include #include typedef int DataType;typedef struct Compl原创 2016-09-26 18:05:13 · 161 阅读 · 0 评论 -
【数据结构】包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个得到栈最小元素的min函数。在该栈中。调用min,push及pop的时间复杂度都是O(1); 其实这个题的思路就是很大众的空间换取时间上的效率。因为栈是先进后出的记录式数据结构。所以在查找某种状态值的时候我们需要了解当前结构中的整体情况。所以在这个题中。我们仅仅用一个空间来记录最小值是不可行的。因为当一个数据出栈后。他是最小值。然后剩下的最小值是谁原创 2016-09-26 18:05:07 · 157 阅读 · 0 评论 -
【数据结构】链表中倒数第k个结点
题目:输入一个链表,输出该链表中的倒数第k个节点。为符合大多数人的习惯,本题从1开始计数。即链表的尾节点是倒数第一个结点。例如一个链表有6个结点,从头到尾开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。 链表的定义如下: struct ListNode{ int m_nValue; ListNode* m_pNext;} 其实这个题原创 2016-09-26 18:04:58 · 211 阅读 · 0 评论 -
【数据结构】旋转数组中的最小数字
惯例,我们来看一下题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个数递增排序的数组的一个旋转,输出旋转数组的最小元素,例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 这个题最直观的解法根本没有任何难度,我们只需要遍历数组一次。就能够找出最小的元素。但是这样的题用这样就是0(n)的时间复杂度。 那有没有什么优化的余地呢?关原创 2016-09-26 18:04:53 · 146 阅读 · 0 评论 -
【数据结构】用两个栈实现队列
惯例。看题: 题目:用两个栈实现一个队列。队列的声明如下。请实现它的两个函数appendTail和deleteHead,分别完成对也尾部插入节点和队列头部删除节点的功能。 队列结构: template class CQueue { public: CQueue(void); ~CQueue(void);原创 2016-09-26 18:04:50 · 149 阅读 · 0 评论 -
【数据结构】二维数组中的查找
我们门来看一下题目:在一个数组中,每一行都按照从左往右递增的顺序排序。每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样一个 我们门来看一下题目:在一个数组中,每一行都按照从左往右递增的顺序排序。每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样一个整数,判断数组中是否含有该整数。 在解决任何题目的时候我们都应该给出一个符合题目条件的相关例子。然后从例子中入手。就可以很原创 2016-09-26 18:04:47 · 257 阅读 · 0 评论 -
【数据结构】链表与顺序表的优缺点,和2道经典的题
这两道题是:1.从尾到头打印单链表。 2.单链表实现约瑟夫环的问题。 首先我们在面试时可能会遇到说明一下顺序表和链表的优缺点,说说他们分别在什么场景下使用: 1.首先我们从2种结构的结构上来进行分析: (1)对于顺序表。不论是静态的还是动态的,他们都是连续的存储空间,在读取上时间效率比较快,可以通过地址之间的运算来进行访问,但原创 2016-09-26 18:04:44 · 2845 阅读 · 0 评论 -
【数据结构】寻找2个单链表相同的值
在关于基础单链表的面试题中,有一道这样的面试题: 打印输出2个链表中的相同节点。 比如2个这样的链表。 650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/75/83/wKioL1Y7K-KB6e35AAA9zhH9XNo028.jpg" title="_MJGX_UQMU`_OB]1M8CTWEL.png " al原创 2016-09-26 18:04:35 · 4373 阅读 · 0 评论 -
大/小堆:源代码
#pragma once#include #include //// 小堆 == 大堆// 仿函数//templatestruct Greater{ bool operator() (const T& l, const T& r) { return l > r; }};templatestruct Less{ bool operator() (const原创 2016-09-26 18:08:06 · 542 阅读 · 0 评论