数据结构考试的一些选择题

数据结构绪论:

  • 数据项:数据的最小单位
  • 数据元素:数据的基本单位
  • 数据结构是带有结构的各数据元素的集合
  • 一些表面上很不相同的数据可以有相同的逻辑结构

线性表

  • 将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是n(当第一个有序表所有的元素都小于或大于第二个表中的元素)
  • 除第一个和最后一个元素外,其余每个元素都有一个且仅有一个直接前驱和直接后继
顺序表(随即存取结构)
  1. 顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是108(注意:不是110)
  2. 在一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为63.5(平均要移动的个数:n/2;)
    补充1:n个元素的顺序表中,查找:平均移动的元素个数为(n+1)/2
    补充2:n个元素的顺序表中,插入:平均移动的元素个数为n/2
    补充3:n个元素的顺序表中,删除:平均移动的元素个数为(n-1)/2
链表(顺序存取结构)
  1. 线性表若采用链式存储结构,要求内存中可用存储单元的地址连续或不连续都可以
  2. 单链表的存储密度**<1**(顺序表的=1)
  3. 链表适用于需不断对表进行插入,删除
  4. 创建一个包括n个结点的有序单链表的时间复杂度是O(n的平方) (创建表O(n),排序也是如此)

栈和队列

栈:先进后出
队列:先进先出

  1. 栈在递归调用,函数调用,表达式求值都有所应用
  2. 解决缓冲区问题,用到队列(先进先出的线性表)
  3. 若一个栈以向量V[1…n]存储,初始栈顶指针top设置为n+1,则元素x进栈的正确操作是top--;V[top] = x;(V[1…n]存储和top设置为n+1,可以看出:元素从数组向量的高端地址进栈)
  4. 判断表达式中括号配对用到
  5. 用链接方式存储的队列,在进行删除运算时头,尾指针可能都要修改(一般情况下只修改头指针,但是,当删除的是队列中的最后一个元素时,队尾指针也丢失了,因此需要对队尾指针重新赋值)
  6. 最大容量为n的循环队列,队满(rear+1)%n == front;;队空rear == front;
  7. 一个递归算法必须包括终止条件和递归部分

树和二叉树

  1. 树的度: 树内各结点度的最大值
  2. 树的深度: 树中结点的最大层次
  3. 二叉树是有序树
  4. 二叉树有5种基本形态(空二叉树,仅有根结点的二叉树,右子树为空的二叉树,左子树为空的二叉树,左右结点均非空的二叉树)
  5. 在二叉树的第i层上至多有2的(i-1)次方个结点
  6. 深度为k的二叉树至多有2的k次方-1个结点
  7. 叶子数 = 度为2的结点数 + 1
  8. 满二叉树(深度为k且含有(2的k次方-1)个结点),注意与完全二叉树的区分,别记混
  9. 完全二叉树,度为1的结点个数为0或1个
树的遍历

先序遍历

  1. 根结点
  2. 先序遍历左子树
  3. 先序遍历右子树

中序遍历

  1. 中序遍历左子树
  2. 根结点
  3. 中序遍历右子树

后序遍历

  1. 后序遍历左子树
  2. 后序遍历右子树
  3. 根结点
二叉树
  1. 把一棵树转换为二叉树后,这颗二叉树的形态是唯一的(因为二叉树是有序的)
  2. 一颗完全二叉树上有1001个结点,其中叶子结点的个数501
    n0 = n2 + 1
    n0+n1+n2 = 1001
    在完全二叉树中,n1 = 0或1
  3. 利用二叉链表存储树,则根结点的右指针为空(左孩子右兄弟,注意:问的是根结点)
  4. 在一棵度为4的数T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数是82
    n0+n1+n2+n3+n4-1 = n1+2乘以n2+3乘以n3+4*n4
  5. 一颗非空的二叉树的先序遍历序列和后序遍历序列正好相反,则二叉树
    一定满足:只有一个叶子结点
    或一定满足:所有的结点均无左孩子或所有的结点均无右孩子
哈夫曼树
  1. 哈夫曼树中没有度为1的结点
  2. 哈夫曼树中两个权值最小的结点一定是兄弟结点
  3. 哈夫曼树中任一非叶结点的权值一定不小于下一层任一结点的权值

  1. 对于无向图,具有 n(n-1)/2 条边,则称为无向完全图
  2. 对于有向图,具有 n(n-1) 条弧,则称为有向完全图
  3. 带权的图通常称为网
  4. 在一个无向图中,所有顶点的度数之和等于图的边数的2倍
  5. n个顶点的连通图用邻接矩阵表示时,该矩阵至少有**2(n-1)**个非零元素
  6. G是一个非连通无向图,共有28条边,则该图至少有9个顶点(若是连通图刚好8个顶点,但是,这是非连通图,要更大一些)
  7. 拓扑排序可以判断一个有向图是否有环
  8. 无向图的邻接矩阵是对称的
图的遍历
  • 深度优先搜索(通常借助来实现算法)
  • 广度优先搜索(通常借助队列来实现算法)
最小生成树
  • 在一个连通网的所有生成树中,各边的代价之和最小的那颗生成树(最小生成树)
  • 普里姆算法(加点法),适用于稠密图
  • 克鲁斯卡尔算法(加边法),适用于稀疏图
拓扑排序

参考资料:
《数据结构 C语言版 第2版》严蔚敏 李冬梅 吴伟民

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值