当前位置: 首页 > news >正文

软考软件设计师常考知识点:(三)数据结构

一、线性结构

考点1:线性表

顺序表:数据在内存中紧邻。

(1)顺序存储方式:数组的内存是连续分配的,并且是静态分配的,即在使用数组之前需要确定空间的大小,灵活性差。读数据快,其他操作效率慢。

a0

a1

a2

a3

a4

a5

a6

a7

(2)链表(linked-list)存储方式链表的内存是不连续的。前一个元素紧邻的地址不一定是下一个元素。链表通过当前元素存储下个元素地址的方式把所有元素串起来。不需要连续空间,对内存友好。但是存储下个元素的地址,耗费更多空间。

特点:

①n个结点离散分布,彼此通过指针相联系。

②除头结点和尾结点外,每个结点只有一个前趋结点和一个后继结点。头结点没有前趋结点,尾结点没有后继结点。

③头结点并不存放有效数据,只存放链表首地址。其头结点的数据类型和首结点类型一样。

④加头结点的目的是方便对链表的操作,比如在链表头部进行结点的删除、插入。

【链表的分类】

单链表、循环链表、双向链表。

考点2:栈与队列

队列:先进先出

栈:先进后出

循环队列通过整数取余运算实现)

队空条件:head=tail

队满条件:(tail+1)%size=head

队列长度:(tail-head+size)%size

循环队列的优点:

相比普通队列,此时入队和出队操作都不需要移动队列中的其他元素。

考点3:串

串的定义:串是仅由字符构成的有限序列,是一种线性表。一般记为S=‘a1a2a3…an’,其中,S是串名,单引号括起来的字符序列是串值。

串的存储

顺序存储;链式存储。

串的几个基本概念

(1)空串与空格串

空串:长度为零,不包含任何字符。

空格串:由一个或多个空格组成的串。虽然空格是一个空白字符,但它也是一个字符,在计算串长度时要将其计算在内。

(2)子串与子序列

子串:由串中任意长度的连续字符构成的序列称为子串。含有子串的串称为主串。子串在主串中的位置是指子串首次出现时,该子串的第一个字符在主串中的位置。空串是任意串的子串。

子序列:一个串的“子序列”(subsequence)是将这个串中的一些字符提取出来得到一个新串,并且不改变它们的相对位置关系。

(3)串比较与串相等

串比较:两个串比较大小时以字符的ASCII码值(或其他字符编码集合)作为依据。实质上,比较操作是从两个字符串的第一个字符开始进行,字符的码值大者所在的串为大;若其中一个串先结束,则以串长较大者为大。

串相等:指两个串长度相等且对应序号的字符也相同。

串的基本操作:

(1)赋值操作StrAssign(s,t):将串s的值赋给串t。

(2)连接操作Concat(s,t):将串t接续在串s的尾部,形成一个新的串。

(3)求串长StrLength(s):返回串s的长度。

(4)串比较StrCompare(s,t):比较两个串的大小。返回值-1、0和1分别表示s<t、s=t和s>t三种情况。

(5)求子串SubString(s,start,len):返回串S中从start开始的、长度为len的字符序列。

二、数组与矩阵

数组

数组类型

存储地址计算

一维数组a[n]

a[i]的存储地址为:a+i*len

二维数组a[m][n]

a[i][j]的存储地址(按行存储)为:a+(i*n+j)*len

a[i][j]的存储地址(按列存储)为:a+(j*m+i)*len

注:下标一般从0开始。

已知5行5列的二维数组a中的各元素占两个字节,求元素a[2][3]按行优先存储的存储地址?

间隔元素数量的计算口诀:

行标准,标*总数+标,简称行列列

列标准,标*总数+标,简称列行行

矩阵

稀疏矩阵

示意图

要点

上三角矩阵

上三角矩阵示意图

在矩阵中下标分别为i和j的元素,对应的一维数组的下标计算公式为:

(2n-i+1) ´ i/2+j

下三角矩阵

下三角矩阵示意图

在矩阵中下标分别为i和j的元素,对应的一维数组的下标计算公式为:

(i+1) ´ 

特殊矩阵

示意图

要点

对角矩阵

对角矩阵示意图

矩阵中的非零元素都集中在以主对角线为中心的对称带状区域中。

稀疏矩阵的表示形式:三元组表(行号,列号,元素值),例:(1,1,5),(1,2,10)等。

三、树

考点1:二叉树的存储与特性

1.树与二叉树的概念

结点(圆形)

分支(结点下面的线)

结点的度:该结点的子树数目

树的度:各结点度的最大值

叶子结点:度为0的结点-无分支

分支结点(非终端结点):度不为0的结点-有分支

内部结点:除根以外的分支结点

层次:根为第1层,以此类推

树的高度:一棵树的最大层次数-总层数

父结点、子结点、兄弟结点

2.二叉树的定义

二叉树是n(n≥0)个结点的有限集合,它或者是空树(n=0),或者是由1个根结点及两棵不相交的且分别称为左、右子树的二叉树所构成。可见,二叉树同样具有递归性质

空树:没有结点的树。

单结点树:就只有一个顶点结点。

二叉树所有结点的度不大于2的树。

满二叉树:任意结点,度为0或2(除最后一层以外,所有结点的度都为2)

软考更多备考学习资料

2025软考考试资料下载PDF版_软考历年真题打包下载版_免费视频课程下载_软考教材下载推荐_思维导图下载_考前冲刺备考资料_历年真题电子版网盘下载-希赛网https://wangxiao.xisaiwang.com/rk/xxzl/n101.html?fcode=h1000118_e3072

http://www.dtcms.com/a/465386.html

相关文章:

  • 双向链表----“双轨联动,高效运行” (第九讲)
  • CEX-DEX 稳定币套利模型
  • 【C++STL :list类 (一) 】C++98 完全指南:std::list 详解与源码剖析
  • shell脚本02
  • 【PM2】PM2 集群模式适用的场景
  • 保定网站建设方案外包南宁网站建设哪
  • 做网站建设费用预算百度贴吧网站开发需求分析
  • Docker 仓库详解与实战配置
  • dockerfile实操案例
  • linux学习笔记(25)——线程安全
  • ubuntu20.04地平线OE3.2.0 GPU Docker使用
  • [VoiceRAG] Azure | 使用`azd`部署应用 | Dockerfile
  • Docker 环境下 GeoPandas/Fiona 报错
  • Docker简易教程
  • vps 网站发布直播软件app下载免费
  • DORIS 服务器宕机重启后出现的问题
  • 网络安全审计技术原理与应用
  • 手机上做网站南宁品牌网站设计公司
  • 第五部分:VTK高级功能模块(第135章 Imaging模块 - 图像处理类)
  • 如何通过 5 种有效方法同步 Android 和 Mac
  • AJAX 知识篇(2):Axios的核心配置
  • 招商网站建设公司申请注册商标的流程
  • 网页美工课程seo网站优化师
  • 海外关键词规划SEO工具
  • AI学习日记——卷积神经网络(CNN):卷积层与池化层的实现
  • iOS 26 系统流畅度实战指南|流畅体验检测|滑动顺畅对比
  • JS中new的过程发生了什么
  • 系统白名单接口添加自定义验证(模仿oauth2.0),防安全扫描不通过
  • 校园服装网站建设预算手机软件应用市场
  • 【AI论文】ExGRPO:从经验中学习进行推理