3.13 简述以下算法的功能(栈和队列的元素类型均为int)。 void algo3(Queue &Q)

3.14 若以1234作为双端队列的输入序列,试分别求出满足以下条件的输出序列: (1) 能由输入受限的双端队列得到,但不能由输出受限的双端队列得到的输出序列。 (2) 能由输出受限的双端队列得到,但不能由输入受限的双端队列得到的输出序列。 (3) 既不能由输入受限的双端队列得到,也不能由输出受限的双端队列得到的输出序列。

3.15 假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个操作:初始化inistack(tws)、入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么有缺点。

3.16 假设如题3.1所属火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示)等待调度,试编写算法,输出对这n节车厢进行调度的操作(即入栈或出栈操作)序列,以使所有的软席车厢都被调整到硬席车厢之前。

3.17 试写一个算法,识别一次读入的一个以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。

3.18 试写一个判别表达式中开、闭括号是否配对出现的算法。

{ }

Stack S; int d; InitStack(S);

while(!QueueEmpty(Q)) { }

while(!StackEmpty(S)) { }

Pop(S, d); EnQueue(Q, d); DeQueue(Q, d); Push(S, d);

3.20 假设以二维数组g(1…m, 1…n)表示一个图像区域,g[i,j]表示该区域中点(i,j)所具颜色,其值为从0到k的整数。编写算法置换点(i0,j0)所在区域的颜色。约定和(i0,j0)同色的上、下、左、右的邻接点为同色区域的点。

3.21 假设表达式有单字母变量和双目四则运算符构成。试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰表达式。

3.22 如题3.21的假设条件,试写一个算法,对以逆波兰式表示的表达式求值。

3.23 如题3.21的假设条件,试写一个算法,判断给定的非空后缀表达式是否为正确的逆波兰表达式,如果是,则将它转化为波兰式。

3.24 试编写如下定义的递归函数的递归算法,并根据算法画出求g(5,2)时栈的变化过程。

3.25 试写出求递归函数F(n)的递归算法,并消除递归:

0m?0,n?0? g?m,n????g?m?1,2n??nm?0,n?0??n?1F?n???n?Fn?2???n?0 n?03.26 求解平方根

A的迭代函数定义如下:

?p?sqrt?A,p,e????1?A?????sqrtA,p?,e????2??p?????p2?A?ep2?A?e

其中,p是A的近似平方根,e是结果允许误差。试写出相应的递归算法,并消除递归。

3.27 已知Ackerman函数的定义如下:

n?1m?0??akm?m,n???akm?m?1,1?m?0,n?0

?akm?m?1,akm?m,n?1??m?0,n?0? (1) 写出递归算法; (2) 写出非递归算法;

(3) 根据非递归算法,画出求akm(2,1)时栈的变化过程。

3.28 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队列何处队列的算法。

3.29 如果希望循环队列中的元素都能得到利用,则需设置一个标志域tag,并以tag的值为0和1来区分,尾指针和头指针值相同时的队列状态是“空”还是“满”。试编写与此结构相应的入队列和出队列的算法,

并从时间和空间角度讨论设标志和不设标志这两种方法的使用范围(如当循环队列容量较小而队列中每个元素占的空间较多时,哪一种方法较好)。

3.30 假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法(在出队列的算法中要返回队头元素)。

3.31 假设称正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’和‘ababab’则不是回文。试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。 3.32 试利用循环队列编写求k阶菲波那契序列中前n+1项的算法,要求满足:fn?max而

fn?1?max,

其中max为某个约定的常数。(注意:本题所用循环队列的容量仅为k,则在算法执行结束时,留在循环队列中的元素应是所求k阶菲波那契序列中的最后k项)

3.33 在顺序存储结构上实现输出受限的双端循环队列的入列和出列(只允许队头出列)算法。设每个元素表示一个待处理的作业,元素值表示作业的预计时间。入队列采取简化的短作业优先原则,若一个新提交的作业的预计执行时间小于队头和队尾作业的平均时间,则插入在队头,否则插入在队尾。

3.34 假设在如教科书3.4.1节中图3.9所示的铁道转轨网的输入端有n节车厢:硬座、硬卧和软卧(分别以P,H和S表示)等待调度,要求这三种车厢在输出端铁道上的排列次序为:硬座在前,软卧在中,硬卧在后。试利用输出受限的双端队列对这n节车厢进行调度,编写算法输出调度的操作序列:分别以字符‘E’和‘D’表示对双端队列的头端进行入队列和出队列的操作;以字符A表示对双端队列的尾端进行入队列的操作。

c语言常用头文件algo,数据结构习题集(C语言版严蔚敏)第一二三章相关推荐

  1. C语言常用头文件总结

    序号库类别  头文件   1  字符处理 ctype.h   2  地区化 local.h   3  数学函数 math.h   4  信号处理 signal.h   5  输入输出 stdio.h  ...

  2. c语言寄存器头文件共用重复定义,C语言头文件的使用

    让我们的思绪乘着时间机器回到大学一年级.C原来老师正在讲台上讲着我们的第一个C语言程序: Hello world! 文件名 First.c main() { printf("Hello wo ...

  3. 栈和队列-第3章-《数据结构习题集》答案解析-严蔚敏吴伟民版

    习题集解析部分 第3章  栈和队列                                                                                   ...

  4. c语言中的头文件string.h的作用,C语言常用头文件及库函数——string.h

    string.h 函数与形参类型: 函数功能: 返回值: 例子: 1.memcmp 函数与形参类型: int memcmp(buf1,buf2,count); void * buf1, void bu ...

  5. 数据结构c语言版第二版(严蔚敏)第五章笔记

    目录 树和二叉树的定义 树的定义 树的基本术语 二叉树的定义 二叉树的性质和存储结构 二叉树的性质 二叉树的存储结构 顺序存储结构 链式存储结构 遍历二叉树和线索二叉树 遍历二叉树 先序遍历 中序遍历 ...

  6. C语言再学习 -- 常用头文件和函数(转)

    参看:C/C++常用头文件及函数汇总 linux常用头文件如下: POSIX标准定义的头文件 <dirent.h>        目录项 <fcntl.h>         文 ...

  7. linux c之c语言符合标准的头文件和linux常用头文件

    1.C语言符合标准的头文件 #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h ...

  8. c语言二叉树的头文件叫什么,西安交大朱站立数据结构——使用C语言》头文件系列——二叉树.doc...

    西安交大朱站立数据结构--使用C语言>头文件系列--二叉树 本文为二叉链存储结构的二叉树操作实现,实现了二叉树的定义.插入数据.删除数据.撤销以及二叉树的打印.前序遍历.中序遍历.后序遍历等.本 ...

  9. C语言semaphore头文件,C语言再学习 -- 常用头文件和函数

    Linux常用头文件如下: POSIX标准定义的头文件 < dirent.h>        目录项 < fcntl.h>         文件控制 < fnmatch. ...

最新文章

  1. Angular rxjs源代码分析:range(0, 10)的实现
  2. 基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口
  3. web开发软件,8个优秀的CSS实践,附面试题
  4. BugkuCTF-Reverse题逆向入门
  5. VB.NET中图像处理的一些技巧以及其和C#图像处理的差距。
  6. python写一个app接收摄像头传输的视频_如何使用Python中的tcp套接字发送和接收网络摄像头流?...
  7. golangsha1解码_如何阅读Golang的源码?
  8. [转载] Python: struct 模块之字节对齐问题
  9. 蹭B站源码泄露的热点来聊聊B站有趣的源码片段
  10. 怎么学习大数据,入门大数据要掌握哪些知识?
  11. SHELLEXECUTEINFO
  12. 社交网络的数据挖掘与分析,什么是社交网络分析
  13. 短信发送中文数据到手机显示乱码
  14. php代码输出笑脸,利用HTML5中的Canvas绘制笑脸的代码
  15. 世界地图的制作(总体概念设计)
  16. 如何制作出美观的游戏界面?
  17. javascript 压缩工具
  18. ELK——企业级日志管理系统
  19. 《管理十诫》学习总结
  20. MD5对文件进行加密,可以支持大文件

热门文章

  1. 如何使用pmd检查代码规范
  2. php 界面库,常见MFC UI界面库
  3. openssl生成证书,并解决浏览器不信任问题
  4. 大疆Livox Mid-40 SLAM
  5. Java学习_根据用户信息查看浏览过商品信息
  6. Jmeter软件测试总结
  7. 关于性格内向者的10个误解(转)
  8. md5碰撞介绍及工具,并对百度网盘进行碰撞
  9. ArchiCAD 21中文版
  10. 花赚福利社~~~~~~青龙脚本