线性表备忘

基本概念

  1. 时间复杂度比较
    O ( 1 ) < O ( log ⁡ 2 n ) < O ( n ) < O ( n log ⁡ 2 n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1)<O\left(\log _{2} n\right)<O(n)<O\left(n \log _{2} n\right)<O\left(n^{2}\right)<O\left(n^{3}\right)<O\left(2^{n}\right)<O(n !)<O\left(n^{n}\right) O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

口诀:常对幂指阶

  1. 算法原地工作——算法所需内存空间为常量
  2. malloc申请的是堆中的空间,需要手动回收

线性表

基本内容

  1. 定义:相同数据类型,有序序列,有限长度
  2. 常用操作:创建、销毁、增加、删除、修改、查找
  3. 分类:按照物理存储的方式不同,分为顺序表和链表。

注意相关基本操作的特殊情况。比如:

  • 顺序表插入前要检查是否已满,删除前检查是否已空
  • 使用含有头结点的链表和不适用头结点的链表的时候基本操作的不同之处
  1. 静态链表:分配一整片连续的区域,节点位置相对集中,使用静态数组的方式存储链表

循环队列

可用于判断队空队满的方法有三种:

  • 增加描述队列大小的size变量,size=0,队空;size=maxsize,队满
  • 增加描述上一步操作的flag变量。例如令上一步为插入操作则为1,删除造作为0。当头指针head和为指针rear相等时,flag=1表示队满,flag=0表示队空
  • 通过牺牲一个存储空间的方式(通常使用这种)。
    • 队满:(rear+1)%maxsize=head
    • 队空:rear=head
    • 插入元素,队尾指针rear=(rear+1)%maxsize
    • 删除元素,队头指针head=(head+1)%maxsize
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值