数据结构
文章平均质量分 78
LeetCode8023
这个作者很懒,什么都没留下…
展开
-
c/c++单链表面试题—链表带环问题
1、判断一个单链表是否带环思路解析:判断一个单链表是不是带环,就看在遍历单链表的时候能不能遍历完成,如果带环的话会陷入死循环程序一直无法结束,但是这种判断方法在程序的实现是不可能的。所以转换一种思路,利用两个遍历速度不同的指针遍历,如果存在环的话,那么快指针迟早会追上慢指针。通过这个判断程序实现起来是比较简单可行的。单链表的结构体及其类的定义struct Node{public: Node(原创 2016-05-29 17:22:29 · 486 阅读 · 0 评论 -
二叉树的非递归遍历
templatevoid BinaryTree:: PrevOrderNoRec(){ if (_root == NULL) { return; } stack s; s.push(_root); while (!s.empty()) { Node* top = s.top();//获取栈顶 cout _data << " "; s.pop(); //右孩原创 2016-05-29 17:23:03 · 334 阅读 · 0 评论 -
二叉树的简单递归实现(创建,遍历,高度,大小)
二叉树二叉树:二叉树是一棵特殊的树,二叉树每个节点最多有两个孩子结点,分别称为左孩子和右孩子满二叉树:高度为N的满二叉树有2^N - 1个节点的二叉树。650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7F/4C/wKioL1cZjXugbIznAAAYPuFdxLA661.png" title="QQ截图2016042210290原创 2016-05-29 17:23:01 · 819 阅读 · 0 评论 -
广义表的递归实现
广义表的定义广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。例如 A = () B = (a,b) C = (a,b,(c,d)) D = (a,b,(c,d),(e,(f),h)) E = (((),())650) this.width=650;" src="http:/原创 2016-05-29 17:22:58 · 1115 阅读 · 0 评论 -
稀疏矩阵的压缩
稀疏矩阵的特点M*N矩阵,矩阵中有效值的个数远远小于无效值的个数,并且这些数据的分布没有规律。例如下面的矩阵650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7F/18/wKioL1cTnG_RdM91AAAM4xL6kRc377.png" title="QQ截图20160417221936.png" alt="wKioL1cTnG原创 2016-05-29 17:22:55 · 721 阅读 · 0 评论 -
复杂链表的复制
题目:一个链表的每个节点,有一个指向next指针指向先一个节点,还有一个random指针指向这个链表的一个随机节点或者NULL,现在要求实现复制这个复杂的链表,返回复制后的新链表。复杂链表的结构templatestruct ComplexNode{public: ComplexNode(const T& data) :_data(data) ,_next(NULL) ,_ran原创 2016-05-29 17:22:52 · 992 阅读 · 0 评论 -
面试题那些事(3)—栈
栈的定义--Stack栈只允许在末端进行插入和删除的线性表。栈具有后进先出的特性(LIFO,Last In First Out)。650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png")原创 2016-05-29 17:22:49 · 346 阅读 · 0 评论 -
c++实现双向链表的常用功能
//结构体的定义struct Node{ Node(const DataType& d) :_next(NULL) ,_prev(NULL) ,_data(d) {}public: DataType _data; Node* _prev; Node* _next;};//双向链表类的定义class DouList{ friend ostream& operat原创 2016-05-29 17:22:34 · 424 阅读 · 0 评论 -
c/c++单链表面试题—链表相交问题
1、判断两个单链表是不是相交思路分析:最简单直接的方法就是依次遍历两条链表,判断其尾节点是不是相等,相等则相交否则不相交。bool CheckCross(const List& list1, const List& list2)//list1,list2为两个对象{ Node* l1 = list1._head; Node* l2 = list2._head; while (l1->_ne原创 2016-05-29 17:22:31 · 373 阅读 · 0 评论 -
最详细的红黑树解析
红黑树红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实翻译 2016-07-09 10:49:28 · 4581 阅读 · 1 评论