继续我们昨天所说的单链表。单链表也是一种线性表,所以总得有个头有个尾。链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。雅加达娱乐城这里有个地方要注意,就是对头指针概念的理解,这个很重要。“链表中第一个结点的存储...
分类:
其他好文 时间:
2014-09-24 13:16:56
阅读次数:
198
首先,关于allocator戳旁边→维基百科-分配器(C++)这次我只用了其中的一部分API,来实现一个简易的vector容器,这个简易版vector实现了插入、删除、查找等简易功能,由于对右值的理解不足,所以这次并未实现关于右值的API。【MSDN-class allocator_base API...
分类:
其他好文 时间:
2014-09-24 00:27:55
阅读次数:
284
线性表的存储结构有两种:顺序存储和链式存储顺序存储:读取数据的时间复杂度为O(1),其实就是数组,但是插入,删除的复杂度略大链式存储:?用一组任意的存储单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位置。数据域:存储数据元素信息的域指针域:把存储直接后继位置的域指针或链:指针域中...
分类:
其他好文 时间:
2014-09-22 21:02:23
阅读次数:
219
链队列,即队列的链式存储结构,它是仅在表头删除和表尾插入的单链表,因此一个链队列需要设置两个分别指示队头元素和队尾元素的指针,为了操作方便,给链队列添加一个头结点,并令队头指针指向头结点,由此,空的链队列的判断条件就是队头指针和队尾指针均指向头结点。
链队列的类型描述:
//链队列类型描述
typedef int QElemType;
typedef struct node{
QElemTy...
分类:
其他好文 时间:
2014-09-22 01:57:11
阅读次数:
189
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少?解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出...
分类:
其他好文 时间:
2014-09-22 01:38:21
阅读次数:
369
栈是限定仅在表的一端进行插入或删除的纯属表,通常称允许插入,删除的一端为栈顶(Top),相应在的,则称另一端为栈底(Bottom)。不含元素的栈则称为空栈。
所设栈S={a1,a2,a3,...,an},则称a1为栈底元素,an为栈顶元素。根据栈的定义可知,栈顶元素总是最后入栈并且最先出栈的;栈底元素总是最先入栈并且最后出栈的。即栈是按后进先出的原则进行的。因此,栈又称为后进先...
分类:
其他好文 时间:
2014-09-20 01:11:16
阅读次数:
285
1.数组必须事先定义好固定的长度,不适合数据动态的增长;
当要增加数据时,可能会超出原先定义的长度的个数,当要减少数据时,会造成内存的浪费
2.链表是动态进行内存分配,可以适应动态数据的增减,方便数据的插入、删除,
链表必须根据next指针找到下一个元素
数组要插入、删除数据时,需要移动大量的数据,非常的繁琐...
分类:
其他好文 时间:
2014-09-19 19:26:36
阅读次数:
131
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。...
分类:
移动开发 时间:
2014-09-19 12:04:15
阅读次数:
157
二叉搜索树:
二叉树的查找很简单,先序后序中序都可以,一开始要判断是否为空。
插入要判断一下是否存在,查找时同时记录其父节点,然后直到找到空节点,插入。
删除比较复杂一点:
逐一判断:
先判断是否为空,然后查找到要删除的节点p,并记录其父节点q,如果查不到,返回false;
当p节点有两个子树时,查到其中序遍历的后继节点,即排序后的之后以为,记为s。查找的同时记录s的父节点r,然后将s...
分类:
其他好文 时间:
2014-09-18 22:22:54
阅读次数:
278
所谓折半查找,又称二分查找,是一种在有序数组中查找某一特定元素的搜索算法。优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元...
分类:
其他好文 时间:
2014-09-18 20:21:44
阅读次数:
265