400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

野生前端的数据结构基础练习(2)——队列-创新互联

野生前端的数据结构基础练习(2)——队列

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网络空间、营销软件、网站建设、长阳网站维护、网站推广。

网上的相关教程非常多,基础知识自行搜索即可。

习题主要选自Orelly出版的《数据结构与算法javascript描述》一书。

参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/Queue

队列的基本知识

基本练习

  1. 根据栈的特性实现一个Queue类,并在后续题目中需要用队列时使用它。
  2. 编写一个函数dancingQueue(str),str中记录着前来参加舞会的人的性别,以空格分割,函数中需要实现将前来跳舞的人按性别分成两队,每当舞池中有空位时,男队和女队的排在最前面的人组成舞伴进入,如果某一队为空时,需要返回对应的消息。
  3. 实现一个PriorityQueue类,实现优先队列的功能,优先队列的元素带有权重,权重越高(一般认为数字越小权重越高)的越早出队。

课后习题(书中第五节习题)

  1. 修改Queue类,生成一个Deque类,允许从队列两端添加和删除元素,因此也叫双向队列。
  2. 使用Deque类判断一个单词是否是回文。
  3. 题目3和题目4比较简单,不再赘述。

习题思路

  1. javascript中的数组就符合双向队列的特性,试着自己去实现几个特征方法即可。

  2. Deque类可以从队列两端出队,每次从两端各出队一个元素进行比较即可。

扩展- 循环队列

循环队列书中并没有提及,它是一种特殊的队列。简单理解就是将基本队列只当做存储结构,而使用frontrear两个指针分别代表队列的头和尾,实际对外表现的队列是frontrear所指向的元素构成的。为了复用存储空间,循环队列在存储结构的实现上是首位相连的。

基本练习

实现一个CircularQueue类,并添加一个扩展方法resize(),当存储空间已满且有元素入队时,自动将存储空间扩充一倍,当元素出队造成队列长度不足存储空间的1/4时,将存储空间减半以释放空间。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:野生前端的数据结构基础练习(2)——队列-创新互联
文章URL:http://mzwzsj.com/article/ddepde.html

其他资讯

让你的专属顾问为你服务