2021年10月11日 软考中级笔记---软件设计师(B站视频笔记)


上午综合部分+下午设计部分也会考察到。算法基础部分在下午是最难的。


数组

首地址 + 元素位置 * 每个元素长度。

存储地址计算
一维数组 a[n]a[i]的存储地址为a+i*len
二维数组 a[m][n]a[i][j]的存储地址(按行存储)为:a + (i x n + j) x len , a[i][j]的存储地址(按列存储)为:a + (j x m + i) x len

稀疏矩阵

矩阵中大量元素为相同的数,只有小部分元素数据值不同。这样其实只要存下个性化的值,就相当于存下了整个矩阵。考点其实就是矩阵(二维数组)某一个元素转化成以为数组该元素所在的位置。
在矩阵中下标分别为i和j的元素,对应的一维数组的下标计算公式为
上三角:(2n - i + 1) x i / 2 + j
下三角:(i + 1) x i / 2 + j
做题时可以采用带入的方法。


数据结构

尤监尤介,视频的一些东西,听君一席话,如听一席话。


线性表

(a1, a2, a3, …, am, …, an

顺序表和链表

顺序表:开辟连续的存储空间。
链表:有一个头结点,一个结点包括数据部分和指针部分,指针用于链接各个结点。链表又可以分为单链表、循环链表、双向链表。
单链表
循环链表:尾结点再连接到头结点。
双向链表:两个指针部分,可以指向后面,亦可以往回。

链表的操作

单链表删除结点;
单链表插入结点;
双向链表删除结点;
双向链表插入结点;

顺序存储与链式存储

性能类别具体项目顺序存储链式存储
空间性能存储密度=1,更优<1
容量分配事先确定动态改变,更优
时间性能查找运算O(n/2)O(n/2)
读运算O(1),更优O([n+1]/2),最好情况为1,最坏为n
插入运算O(n/2),最好为0,最坏为nO(1),更优
删除运算O([n-1]/2)O(1),更优

队列与栈

规则简单但是结合起来灵活性很强
队列:先进先出,队尾入,队头出。

队尾→队头→

:先进后出,栈顶入,栈顶出。(往箱子里放东西)

↔栈顶栈底

循环队列
队空条件:head = tail
队满条件:(tail + 1) % size = head。(尾指针下一个元素是头指针)

例子:
留下一个空间不存数据。6个空间,存5个数据,size = 5。空间序号0,1,2,3,4,5→0(5之后又回到0)
队空:队尾tail坐标0 , 队头head坐标0。验证一下公式:head = tail
依次入队:队尾入队。入队1个元素:tail = 1;入队2个元素:tail=2;以此类推。。。
依次出队:对头出队。出队1个元素:head=2;出队2个元素:head=2;以此类推。。。
队满:队头坐标:0,队尾坐标:4。坐标5没有存数据。验证一下公式(tail+1)%size=head。(4+1)%5=0。
告诉队头坐标head和size以及存了多少个元素n,求尾指针坐标。tail=(head+n)%size

出栈序列
栈:元素按照a、b、c顺序入栈,可能的出栈序列。
1.栈空间为1:abc
2.栈空间为2:bca、bac、acb
3.栈空间为3:cba


广义表

广义表是n个元素组成的有序序列,是线性表的推广。
LS=(a0, a1, a2, a3, …, an
广度:长度;深度:递归定义的重数。原子的深度为0,空表的深度为1。
基本运算:取表头head(Ls)和表位tail(Ls)。(注:表尾是除了表头外所有的元素)
若有LS1=(a, (b, c), (d, e))
LS1的长度为3, 深度为2。
head(LS1) = a ; tail(LS1)=((b, c), (d, e))
若要取出LS1的b元素,需要做的操作为:head(head(tail(LS1)))

。。。烦人,出差回来后,考试已经结束了。。。
未完待续。。。。。。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wxiangjianhuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值