[刷题]数据结构[1.15]

数组:

  1. 二维数组可以省略行数,不可以省略列数
  2. 元素存储的首地址为前一个元素的尾地址
  3. 对于二维数组a,a是行指针,&(*(a+1)+2)表示a第二行第二列元素的地址;&a+1为二维指针,即从a向后跳过一个完整数组全占用的内存空间,即a地址+sizeof(a)
  4. 数组名是常量指针,不能自身++,*a++错误,也不能赋值a=错误
  5. a+sizeof(int)等价于a[4]的地址,因为a+1前进了4个字节

字符串:

  1. StringBuffer是一个线程安全的可修改的字符序列;StringBuilder是线程不安全的可修改的字符序列;String的值是不可变的,所以是线程安全
  2. 存储数据时,通常不仅要存储数据元素的值,还要存储元素之间的关系
  3. 字符串是一种特殊的线性表,每个结点为一个字符
  4. 字符串打印时 — 表示左对齐,第一个数表示宽度,小数点后表示打印数
  5. n个字符的字符串全排列方式为A(n,n),每出现一个字符重复就/2
  6. 定义字符串时如果=右边有变量则重新创建一个新的对象

链表:

  1. 线性表的长度是所包含的元素的个数
  2. 链表用于管理磁盘空闲块

栈:

  1. n个数的出栈方式数量为卡特兰数,f(n)=C(2n,n)/(n+1)
  2. 用带头,尾指针的单向链表表示一个栈,该栈的栈顶指针top设置为链表头
  3. 对于栈用栈顶指针表示栈顶,而栈的插入和删除操作均在栈顶进行

队列:

  1. 循环队列队空时:front=rear;链队列为空时:首尾指针都为空,如果front=rear,链队列里有一个元素循环队列队满时:(rear+1)%maxsize=front
  2. 对于队列用队头和队尾指针分别表示允许插入和删除的一端
  3. 求循环队列中的元素个数的公式为:(rear-front+size)%size
  4. 链队列首指针指向首元素,尾指针指向尾元素。循环队列首指针指向首元素,尾指针指向尾元素的后一位。

树:

  1. 二叉树结点N0=N2+1
  2. Huffman树N0=N,只有度为0和2的结点,且N0=N2+1
  3. B+树用于文件索引和数据库索引,以及查找硬盘数据
  4. 线索二叉树LTag=0指向左孩子,LTag=1指向前驱;RTag对应右孩子和后继
  5. B*树:在B+树的基础上增加指向兄弟的指针
  6. 森林转二叉树时,将森林每个结点左指针指向该结点的孩子,右指针指向该结点的兄弟

图:

1.有向完全图边数:n(n-1),无向完全图边数:n(n-1)/2

2.对连通图调用一次深度优先遍历可以访问到图中所有顶点,非连通图不行

堆:

  1. 堆和栈的区别:①栈由系统自动分配,获得空间小,申请速度快,为连续的空间,生长方向向下,即内存地址减少的方向增长;堆是人为申请开辟,获得空间大,申请速度慢,为不连续的空间,生长方向向上,即内存地址增大的方向增长。②栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数各参数进栈,静态变量不进栈;堆是在头部用一个字节存放堆的大小,堆中内容由人为安排。③堆是共有的空间,在操作系统对进程初始化时进行分配,栈是线程独有,用于保存运行状态、局部变量等。
  2. 有n个元素的序列,若使用筛选法建堆,则从位置为n/2取下整的元素开始建堆
  3. 用堆来实现具有优先级的队列
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值