数据结构刷题错题Day 1

1、编码: 用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要多长的二进制字符串?

在这里插入图片描述
解析:
在这里插入图片描述

Huffman编码原理

在这里插入图片描述
例题:
在这里插入图片描述

2、栈和队列:用俩个栈模拟实现一个队列,如果栈的容量分别是O和P(O>P),那么模拟实现的队列最大容量是多少?

用两个栈模拟实现一个队列,其最大容量是多少?

3、广义表E((a,(a,b),((a,b),c)))的长度和深度分别为多少?

广义表的长度为去掉最外面的括号后,里面的元素个数
深度是 包含的元素 最大的嵌套次数
题目中,表((a,(a,b),((a,b),c))) 去掉最外层括号后为:(a,(a,b),((a,b),c)) 这一个元素,所以长度为1;
表((a,(a,b),((a,b),c))),里面标红的元素a和b外面的括号数最多,即4,所以深度为4.

4、线性表的顺序存储结构是一种() 的存储结构,线性表的链式存储结构是一种()的存储结构。

解析:顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

一:顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配。
它的优点是:
(1)方法简单,各种高级语言中都有数组,容易实现。
(2)不用为表示节点间的逻辑关系而增加额外的存储开销。
(3)顺序表具有按元素序号随机访问的特点。
缺点:
(1)在顺序表中做插入、删除操作时,平均移动表中的一半元素,因此对n较大的顺序表效率低。
(2)需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置;预先分配过小,又会造成溢出。
二、在链表中逻辑上相邻的数据元素,物理存储位置不一定相邻,它使用指针实现元素之间的逻辑关系。并且,链表的存储空间是动态分配的。
链表的最大特点是:
插入、删除运算方便。
缺点:
(1)要占用额外的存储空间存储元素之间的关系,存储密度降低。存储密度是指一个节点中数据元素所占的存储单元和整个节点所占的存储单元之比。
(2)链表不是一种随机存储结构,不能随机存取元素。

5、希望用最快的速度从一个无序数组中挑选出其中前十个最大的元素,在以下的排序方法中()【不会,待查】

  • 未懂,待续

6、已知int a[3][4];则下列能表示a[1][2]元素值的是()【不会,待查】

7、已知-算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

python 前缀、中缀、后缀表达式如何互相转换

8、堆排序的时间复杂度是(),堆排序中建堆过程的时间复杂度是()。【不会,待查】

9、如果使用比较高效的算法判断单链表有没有环的算法中,至少需要几个指针?

答案是2,判断链表有没有环,可以用快慢指针来实现,两指针的移动速度不一样。如果相遇,则表示有环,否则表示无环

10、一个栈的入栈序列是a,b,c,d,e,f,则不可能的出栈序列是()

在这里插入图片描述
选项a:abcdef依次入栈,再依次出栈,符合桟的先进后出原则;
选项b:d出桟,e入栈再马上出桟,f入栈再马上出桟, 但是b不可能在c的前面出桟;
选项c:abc依次入栈,接着d入栈,出桟,e入栈出桟,f入栈,出桟,最后cba出桟;
选项d:a入栈,出桟,b入栈,b出桟,c入栈,c出桟。。。

11、最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()

队空条件:rear == front

在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素。
当循环队列中只剩下一个空存储单元时,队列就已经满了。因此,

  • 队列判的条件:front = rear
  • 队列判的条件:front =(rear+1)%MaxSize
    【%是取余操作 mod 或者 MOD,因为是循环,当走到尾部后,怎么才能让两个指针重新为0呢?答案就是 取余。通过取余操作,可以在结束后再从0计数】
  • 队列长度:(rear - font + maxsize) % maxsize
  • 入队:(rear + 1) % maxsize
  • 出队:(font + 1) % maxsize
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值