
数据结构
ljishuboke
这个作者很懒,什么都没留下…
展开
-
ROM
ROM是只读内存(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,并且资料不会因为电源关闭而消失。其结构较简单,读出较方便,因而常用于存储各种固定程序和数据。转载 2016-03-03 15:49:46 · 397 阅读 · 0 评论 -
线性结构
线性结构是一个数据元素的有序(次序)集合。它有四个基本特征: 1.集合中必存在唯一的一个”第一个元素”; 2.集合中必存在唯一的一个”最后的元素”; 3.除最后元素之外,其它数据元素均有唯一的”后继”; 4.除第一元素之外,其它数据元素均有唯一的”前扑”。 数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。相对应于线性结构,非线性结构的逻辑特征是一个转载 2016-03-13 21:57:42 · 461 阅读 · 0 评论 -
一个非空广义表的表尾
(1)《数据结构》对广义表的表头和表尾是这样定义的: 如果广义表LS=(a1,a2…an)非空,则 a1是LS的表头,其余元素组成的表(a2,a3,..an)是称为LS的表尾。 根据定义,非空广义表的 表头是一个元素,它 可以是原子也可以是一个子表, 而表尾则必定是子表。例如:LS=(a,b),表头为a,表尾是(b)而不是b.另外:LS=(a)的表头为a,表尾为空表(). (2)非空广义表,转载 2016-03-13 21:02:46 · 6596 阅读 · 0 评论 -
sizeof
char 1 int 4 short 2short a[100],sizeof(a) 返回什么?200 void Func(char a[100]) { cout<< sizeof(a) << endl; // 4 字节而不是100 字节 }sizeof 返回的值表示的含义如下(单位字节): 数组 —— 编译时分配的数组空间大小; 指针 —— 存储该指针所用的转载 2016-03-10 22:06:11 · 348 阅读 · 0 评论 -
说出ArrayList,Vector, LinkedList的存储性能和特性?
ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始 ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作,他们都允许直接用序号索引转载 2016-03-10 21:46:38 · 666 阅读 · 0 评论 -
下列数据结构具有记忆功能的是
栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用 可以用浏览网页的情况来理解,我们在浏览第一个网页A,点网页里的一个标题,进入网页B,再在网页B里点击一个标题,进入网页C,这时连续按后退退回网页A,这说明浏览网页有记忆功能,栈的原理跟这差不多,所以说它有记忆功能,自己转载 2016-03-10 21:41:30 · 2751 阅读 · 0 评论 -
Asume you have an object to describe customer data:{ ID(7 digit numeric) Family Name(string) Account
Name -> ID 就是 string -> int,字符串最好用 Hash 或 Tree 来索引,不过由于 Name 不是唯一的,一个 Name 可能对应多个 ID,要用 Linked List 做对应过来的结构。所以可以是 Hash + Linked List 或 Tree + Linked List。(Tree 可以用 Trie,复杂度是 O(length(name)),其实 Hash 会更转载 2016-03-10 21:38:03 · 625 阅读 · 0 评论 -
当很频繁地对序列中部进行插入和删除操作时,应该选择使用的容器是()
listC++ STL 的实现: 1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 4.stack 底层一般用23实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗转载 2016-03-10 21:18:08 · 7174 阅读 · 0 评论 -
声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是()
先看未定义标识符p,p的左边是,*p表示一个指针,跳出括号,由于[]的结合性大于,所以p指向一个大小为10的数组,即(*p)[10]。左边又有一个号,修释数组的元素,(*p)[10]表示*p指向一个大小为10的数组,且每个数组的元素为一个指针。跳出括号,根据右边(int )可以判断((*p)[10])是一个函数指针,该函数的参数是int,返回值是int。转载 2016-03-10 21:13:47 · 4502 阅读 · 0 评论 -
给定如下代码: int x[4]={0}; int y[4]={1}; 数组x和y的值为()
如果没有指定默认为0 ,如果指定的个数小于数组个数 剩下的补0转载 2016-03-10 21:11:04 · 1621 阅读 · 0 评论 -
坐标轴上从左到右依次的点为a[0]、a[1]、a[2]……a[n-1],设一根木棒的长度为L,求L最多能覆盖坐标轴的几个点?
算法思想:开始时我把题目理解错了,以为是求a中最大子序列和使其等于L,实际上是求满足a[j]-a[i] <= L && a[j+1]-a[i] > L这两个条件的j与i中间的所有点个数中的最大值,即j-i+1最大,这样题目就简单多了,方法也很简单:直接从左到右扫描,两个指针i和j,i从位置0开始,j从位置1开始,如果a[j] - a[i] <= L则j++并记录中间经过的点个数,如果a[j] - a转载 2016-03-10 20:57:01 · 620 阅读 · 0 评论 -
#include<stdio.h>是什么意思啊!
stdio.h stdio.h就是指“standard input&output” 意思就是说标准输入输出头文件! 所以了,用到标准输入输出函数时,就要调用这个头文件! 调用:#include转载 2016-03-10 20:38:06 · 9868 阅读 · 0 评论 -
哪两个数据结构,同时具有较高的查找和删除性能
解析:几种常见的数据结构的操作性能对比如下图所示 图1 由上图可见,平衡二叉树的查找,插入和删除性能都是O(logN),其中查找和删除性能较好;哈希表的查找、插入和删除性能都是O(1),都是最好的。转载 2016-03-10 20:35:59 · 14355 阅读 · 0 评论 -
C++中typedef struct和struct的用法
由于对typedef理解不够,因此从网上摘录了一些资料,整理如下: 2. C/C++中typedef struct和struct的用法 4. struct _x1 { …}x1; 和 typedef struct _x2{ …} x2; 有什么不同? 6. 7. 其实, 前者是定义了类_x1和_x1的对象实例x1, 后者是定义了类_x2和_转载 2016-03-04 15:55:45 · 660 阅读 · 0 评论 -
C++中class与struct的区别
C++中struct和class唯一的区别就是struct默认都是公有的(main函数可直接访问)。class默认都是私有的(main函数不可直接访问)。转载 2016-03-04 15:49:26 · 293 阅读 · 0 评论 -
c语言L->length与L.length
C语言中, -> 是指针操作符, 点是结构操作符。如果 L 是一个结构实例的指针,要用 -> 访问结构里的变量,而不能用点。如果L 是一个结构的实例而非指针,只能用点而不能用 -> 。L—>length++与++(L.length)区别在于自增发生在使用前还是使用后,比如 L->length等于5,a=L->length++,则a=5, L->length自增为6;而b=++(L.length),则转载 2016-03-04 13:20:03 · 8308 阅读 · 0 评论 -
不设置尾指针的链表作为链队列的存储结构
使用不设置尾指针的链表作为链队列的存储结构,在进行入队操作的时候需要遍历整个链队列至队尾,然后在进行插入。这当然是可行的,只是效率有所下降。 如果只使用一个指针又要保持效率的话,可以使用只带尾指针的循环单链表作为存储结构,这样出队和入队的开销都是O(1)。转载 2016-03-13 22:00:15 · 1136 阅读 · 0 评论