赞
踩
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
在从根向下遍历中,每次先转移到左子树上,而右边则需要暂存起来。
因为二叉树并不一定是平衡的,也就是深度d!=logn,有可能d>>logn。。所以栈大小应该是O(d)
栈是系统自动分配的,堆是人为分配的;
栈的地址是自上向下,朝内存地址递减,堆则相反;
其次,栈的内存分配是由系统自动管理,而堆需要人为通过new、delete等形式分配、释放内存,容易产生碎片化严重的问题;
栈一般用于临时变量的创建,而堆用于数据更改等方面
A. LRU的过程如下(简单理解,访问的频率越高越不该丢弃)
1.新数据插入到链表头部;
2.每当缓存命中(即缓存数据被访问),则将数据移到链表头部;
3.当链表满的时候,将链表尾部的数据丢弃。
A恰好说反了
B.简单方法:
1.先将中缀表达式加括号:(A+((B+C)*D));
2.再把运算符移到括号后面(前缀移到前面): (A((B C)+D)*)+;
3.把括号去掉:ABC+D*+。
C. LIFO:Last In First Out(后进先出)
D.汇编语言也并不能被机器执行,机器可以执行的是二进制的机器语言。
E. TCP建立通信需要三次握手,而UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。
F.程序员是可以通过调用fork()函数的方式进行切换的。
vector 底层数据结构为数组,支持快速随机访问
list 底层数据结构为双向链表,支持快速增删
map、set、都是STL关联容器,支持快速增删
数据元素间有线性关系——线性结构(所谓线性关系:除第一个元素外,其他元素有且只有一个前驱;除最后一个元素外,其他元素有且只有一个后继)
常用的线性结构:线性表、栈、队列、双队列、数组、串
常用的非线性结构:二维数组、多维数组、树(二叉树等)、图、广义表
栈的典型应用:表达式求值,括号匹配,递归函数调用,数制转换等
队列的典型应用:打印队列,事件排队
中缀表达式转后缀表达式转换技巧:加括号,移符号,去括号; eg:前缀:A+(B+C)*D
1. 先将中缀表达式加括号:(A + ((B + C) * D));
2. 再把运算符移到括号后面(前缀移到前面):(A ((B C)+ D)*)+;
3. 把括号去掉:ABC+D*+。
而且这种方法也适合于中缀转前缀。
顺序存储:在一块连续的存储区域一个接着一个的存放数据。顺序存储方式把逻辑上相邻的节点存储在物理位置放在相邻的存储单元里,节点间的逻辑关系由存储单元的邻接关系来体现。顺序存储方式也称为顺序存储结构,一般采用数组或结构数组来描述。
优点:
在结点等长时可以随机存取
存储密度高节省存储空间
用结点的物理次序反映结点之间的逻辑关系
缺点:
插入和删除结点时要移动大量的结点
必须静态分配连续空间
链接存储:链接存储方式比较灵活,不要求逻辑上相邻的节点在物理位置上相邻,节点间的逻辑关系由附加的引用字段来表示。一个节点的引用字段往往指向下一个节点的存放位置。链接存储方式也成为链式存储结构。
优点:
插入和删除比较灵活,不需要大量移动结点
动态分配空间比较灵活,不需要预先申请最大的连续空间
缺点:
增加指针的空间开销
检索必须沿链进行,不能随机存取
因此D不是顺序存储的优点,而是链接存储的优点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。