云南专升本-数据结构知识总结和常考例题(二)


四、串

  1. 串是由零个或多个字符组成的有限序列。

  2. 子串:串中任意个连续的字符组成的子序列称作该串的子串.

  3. 主串:包含子串的串相应的称为主串.

  4. 子串在主串中的位置:子串的第一个字符在主串中的位置表示.

  5. 空串:长度为零的串称为空串.

  6. 空格串:串中元素均为空格的串称为空格串.

  7. 串相等:长度相等且对应位置字符都相等.

串的存储结构

求串长:串中的字符个数 ,strlength()

串连接:strCat()

求子串:Substring()

主串首次出现的位置:Strindex()
eg1.串是一种特殊的线性表,其特殊行表现在()
A.可以顺序存储
B.数据元素是一个字符
C.可以链式存储
D.数据元素可以是多个字符
答案:B

eg2.串的长度是指()
A.串中所含不同字母的个数
B.串中所含字符的个数
C.串中所含不同字符的个数
D.串中所含非空格字符的个数
答案:B

判断题
串的链式存储与串的顺序存储相比在插入,删除操作上效率更高。(√)

五、数组和广义表

1.数组

在这里插入图片描述
特殊矩阵:值相同的元素或者零元素在矩阵中的分布有一定规律的矩阵称为特殊矩阵.

稀疏矩阵:非零的数据元素个数很少的矩阵称为稀疏矩阵.

对称矩阵:一个n阶方阵,若满足a[i][j]=a[j][i],则称该矩阵为对称矩阵.

三角矩阵:主对角线上方和下方的元素(不包括对角线)均为常数或零元素的矩阵.

行表:记录稀疏矩阵中每行非零元素在三元组表中的起始位置的表.

三元组表:若线性表顺序存储的每一个结点均是三元组,则该线性表的存储结构称为三元组表.

带状矩阵:所有非零元素均集中在以主对角线为中心的带状区域的矩阵.

1.二维数组的两种存储方式:
以行为主序:按行优先求起始地址  A[i][j]=loc+(n*i+j)*x
loc:起始[0][0]   x:元素个数  n:列
以列为主序:按列优先求起始地址  A[i][j]=loc+(m*j+i)*x
loc:起始[0][0]   x:元素个数   m:行

2.广义表

一、广义表的长度和深度
长度:为表中最上层元素的个数
深度:为表中括号的最大层数

二、广义表的两个基本操作
1.取广义表表头GetHead:表中的第一个元素为此表的表头
2.取广义表表尾GetTail:表中除第一个外的其余元素组成的表为此表的表尾
任何一个非空广义表的表头可能是原子,也可能是广义表,而其表尾必定是广义表

eg1.数组通常具有的两种基本操作是()
A.查找和修改
B.查找和索引
C.索引和修改
D.监理和删除
答案:A

eg2.在以下叙述中正确的是()
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作是先进后出
答案:B

eg3.对特殊矩阵采用压缩存储的目的主要为了()
A.对矩阵元素的存取变得更简单
B.表达更简单
C.去掉矩阵中多余元素
D.节省存储空间
答案:D

六、树和二叉树

1.树

树:是n个结点的有限集合,n≥0,有且只有一个称为根的结点,根结点无前驱.

森林:m(m≥1)棵互不相交的树的集合.

有序树:树中结点的各子树看成是从左至右依次有序的,且不能交换.

2.二叉树

在这里插入图片描述
二叉树常见的五种基本形态
在这里插入图片描述
3.二叉树的性质
性质1:非空二叉树上叶子结点数等于度为2的节点数加1,即N0=N2+1(N0:度为0,适用所有二叉树)
性质2:非空二叉树上第K层至多有2k-1个结点(k>=1),(至少有一个结点)
性质3:高度为H的二叉树至多有2H-1个结点(H>=1),(至少有H个结点)
性质4:具有N个结点的完全二叉树的高度为[ log2(N+1) ] (向上取整) 或 [ log2N ]+1 (向下取整)
性质5:对完全二叉树从上到下,从左到右的顺序依次编号1,2,…,N,则有一下关系:
a.当i=1,则序号为i的结点是根结点,无双亲结点
b.当2i<=N时,结点i的左孩子编号为2i,否则无左孩子
c.当2i+1<=N时,结点i的右孩子编号为2i+1,否则无右孩子

二叉树的遍历

1.先序遍历递归算法(根左右)
void PreOrder(BiTree T){
     if(T!=Null){
     visit(T);
     PreOrder(T->lchild);
     PreOrder(T->rchild);
}
}
2.中序遍历递归算法(左根右)
void InOrder(BiTree T){
     if(T!=Null){
     PreOrder(T->lchild);
     visit(T);
     PreOrder(T->rchild);
}
}
3.后序遍历递归算法(左右根)
void PostOrder(BiTree T){
     if(T!=Null){
     PreOrder(T->lchild);
     PreOrder(T->rchild);
     visit(T);
}
}

4.层次遍历
考点:进行层次遍历需要借助一个队列
(1)删一个(出队)
(2)让p指向被删元素
(3)p指向左右孩入队

树及其转换
(一)、树转换为二叉树(左孩子右兄弟)
特点:1.树对应的二叉树正颗大树的根节点无右子树
2.树的先序遍历对应二叉树的先序遍历
3.树的后序遍历对应二叉树的中序遍历
(二)、森林转换为二叉树
森林与二叉树之间的对应关系
在这里插入图片描述
(1)以T1的根为二叉树的根
(2)其余的根(T2、T3)作为T1 的兄弟
(3)左孩子右兄弟

哈夫曼树(二叉树)
叶子结点带权路径长度 = 该结点权值 * 路径长度
树的带权路劲长度 = 叶子结点带权路径长度之和
wpl:最小的二叉树

判断题
1.树的三种常用的存储方法:孩子表示法,双亲表示法和孩子兄弟表示法.(√)
2.深度为k的二叉树中,结点总数最多为(2^k)-1个.(√)
3.哈夫曼树又称最优二叉树,是一类带权路径长度最短的树.(√)
4.满二叉树是一棵深度为k的,且有(2^k)-1个结点的二叉树.(√)
5.二叉树的任意结点最多有两颗子树(√)

对一颗具有n个结点的树,树中所有的度数之和为()
A.n       B.n-2        C.n-1       D.n+1
答案:C

设在一颗度为4的树中,度数为4的结点数有4个,度数为3的结点数有2个,度数为2的结点数有2个,度数为1的结点数有5个,那么度数为0的结点数有()
A.17      B.18       C.19        D.20
答案:C

二叉树和度为2的树的相同之处包括()
A.每个结点都有一个或两个孩子结点
B.至少有一个根节点
C.至少有一个度为2的结点
D.每个结点至多只有一个双亲结点
答案:D

提示:连载中…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南余.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值