数据结构程序设计题目共29题
国开作业《数据结构(本)-形考作业》 (29)

题目:一个顺序栈一旦被声明,其占用空间的大小()。
选项A:动态变化选项B:已固定选项C:可以改变选项D:不能固定答案:已固定题目:链栈和顺序栈相比,有一个比较明显的缺点,即()。
选项A:不会出现栈空的情况选项B:通常不会出现栈满的情况选项C:删除操作更加方便选项D:插入操作更加方便答案:通常不会出现栈满的情况题目:用单链表表示的链式队列的队头在链表的()位置。
选项A:链尾选项B:链中选项C:任意位置选项D:链头答案:链头题目:在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,该缓冲区应该是一个()结构。
选项A:线性表选项B:堆栈选项C:队列选项D:数组答案:队列题目:循环队列A[m] 存放其元素,用front和rear分别表示队头及队尾,则循环队列满的条件是()。
选项A:(rear=front选项B:(rear =front+1选项C:(rear+1)%m-1=front选项D:(rear+1)%m=front答案:(rear+1)%m=front题目:在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。
选项A:p-next=top-next; top-next=p;选项B:p-next=top; top=p;选项C:top-next=p;选项D:p-next=top-next; top=top-next;答案:p-next=top; top=p;题目:在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删结点的值,则执行()。
选项A:x=top;top=top-next;选项B:x=top-data;选项C:top=top-next; x=top-data;选项D:x=top-data; top=top-next;答案:x=top-data; top=top-next;题目:在一个链队中,设front和rear分别为队首和队尾指针,则插入p所指结点时,应执行()。
数据结构习题及答案

数据结构习题习题一一、选择题1、数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的(B)和运算的学科。
A.结构B.关系C.运算D.算法2、在数据结构中,从逻辑上可以把数据结构分成(C)。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.逻辑结构和存储结构3、线性表的逻辑顺序和存储顺序总是一致的,这种说法(B)。
A.正确B.不正确C.无法确定D.以上答案都不对4、算法分析的目的是(C)。
A.找出算法的合理性B.研究算法的输人与输出关系C.分析算法的有效性以求改进D.分析算法的易懂性二、填空题1、数据是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,数据是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
例如,数学中所用到的整数和实数,文本编辑所用到的字符串等。
2、数据元素是数据的基本单位,有些情况下也称为元素、结点、顶点、记录等。
3、数据项是数据不可分割的最小单元,是具有独立含义的最小标识单位。
例如构成一个数据元素的字段、域、属性等都可称之为_数据项。
4、简而言之,数据结构是数据之间的相互关系,即数据的组织形式。
5、数据的逻辑结构是指数据之间的逻辑关系。
逻辑结构是从逻辑关系上描述数据,它与具体存储无关,是独立于计算机的。
因此逻辑结构可以看作是从具体问题抽象出来的数学模型。
6、数据的存储结构指数据元素及其关系在计算机存储器内的表示。
存储结构是逻辑结构在计算机里的实现,也称之为映像。
7、数据的运算是指对数据施加的操作。
它定义在数据的逻辑结构之上,每种逻辑结构都有一个数据的运算。
常用的有:查找、排序、插人、删除、更新等操作。
8、数据逻辑结构可以分为四种基本的类型,集合结构中的元素除了仅仅只是同属于一个集合_,不存在什么关系。
9、数据逻辑结构的四种基本类型中,线性结构_中的元素是一种一对一的关系,这种结构的特征是:若结构是非空集,则有且只有一个开始结点和一个终端结点,并且所有结点最多只能有一个直接前驱和一个直接后继。
数据结构题集及答案

判断题1.数据的逻辑结构与数据元素本身的内容和形式无关。
(√)2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。
(√)3.数据元素是数据的最小单位。
(√)4.数据的逻辑结构和数据的存储结构是相同的。
(×)5.程序和算法原则上是没有区别的,所以在讨论数据结构时可以通用。
(×)6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构。
(√)7.数据的存储结构是数据的逻辑结构的存储映像。
(×)8.数据的物理结构是指数据在计算机内实际的存储形式。
(√)9.数据的逻辑结构是依赖于计算机的。
(×)10.算法是对解题方法和的描述步骤。
(√)填空题:1.数据有逻辑结构和存储结构两种结构。
2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。
3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。
4.树形结构和图形结构合称为非线性结构。
5.在树形结构中,除了树根结点以外,其余每个结点只有 1 个前驱结点。
6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。
7.数据的存储结构又叫物理结构。
8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。
9.线性结构中的元素之间存在一对一的关系。
10.树形结构中的元素之间存在一对多的关系。
11.图形结构的元素之间存在多对多的关系。
12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面的内容。
13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的有限集合。
14.算法是一个有穷指令的集合。
15.算法效率的度量可以分为事先估算和事后统计法。
16.一个算法的时间复杂性是算法输入规模的函数。
17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模n的函数。
18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O(nlog2n )。
数据结构考试试题及答案

数据结构考试试题及答案数据结构考试试题及答案数据结构是计算机科学中非常重要的一门课程,它涉及到了计算机程序设计中的数据组织、存储和管理等方面。
在学习数据结构的过程中,掌握基本的数据结构类型、操作和算法是非常重要的。
为了帮助大家更好地掌握数据结构,下面将提供一些常见的数据结构考试试题及答案。
一、选择题1. 下面哪个不是线性数据结构?A. 数组B. 链表C. 栈D. 队列答案:D. 队列2. 下面哪个数据结构可以实现先进先出(FIFO)的操作?A. 栈B. 队列C. 链表D. 树答案:B. 队列3. 下面哪个数据结构可以实现后进先出(LIFO)的操作?A. 栈B. 队列C. 链表D. 树答案:A. 栈4. 下面哪个数据结构可以实现快速查找和插入操作?A. 数组B. 链表C. 栈D. 队列答案:A. 数组5. 下面哪个数据结构可以实现快速查找和删除操作?A. 数组B. 链表C. 栈D. 队列答案:B. 链表二、填空题1. 请写出数组的插入操作的时间复杂度。
答案:O(n)2. 请写出链表的删除操作的时间复杂度。
答案:O(1)3. 请写出栈的出栈操作的时间复杂度。
答案:O(1)4. 请写出队列的入队操作的时间复杂度。
答案:O(1)5. 请写出二叉搜索树的查找操作的时间复杂度。
答案:O(log n)三、简答题1. 什么是数据结构?答案:数据结构是计算机存储、组织数据的方式,它定义了数据的逻辑结构和存储结构,以及对数据进行操作的算法。
2. 请解释什么是时间复杂度和空间复杂度。
答案:时间复杂度是衡量算法执行时间的度量,它表示算法执行所需的时间与问题规模之间的关系。
空间复杂度是衡量算法所需的存储空间的度量,它表示算法所需的存储空间与问题规模之间的关系。
3. 请解释什么是递归算法,并给出一个例子。
答案:递归算法是一种自己调用自己的算法。
一个经典的例子是计算斐波那契数列的第n项。
代码如下:```int fibonacci(int n) {if (n <= 1) {return n;}return fibonacci(n-1) + fibonacci(n-2);}```以上就是一些常见的数据结构考试试题及答案。
数据结构题集

数据结构题集正确获得1.00分中的1.00分标记题⽬题⼲中缀表达式:(a+b)*d+e/(f+a*d)+c的后缀表达式为:ab+d*efad+/*+c+ ( )选择⼀项:对错反馈正确的答案是“错”。
正确此次提交得分:1.00/1.00。
题⽬2正确获得1.00分中的1.00分标记题⽬题⼲若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进⾏,但不允许连续三次进⾏退栈操作,则不可能得到的出栈序列是()选择⼀项:a. b,c,a,e,f,db. a,f,e,d,c,bc. d,c,e,b,f,ad. c,b,d,a,e,fcorrect feedback正确答案是:a,f,e,d,c,b正确此次提交得分:1.00/1.00。
题⽬3正确获得1.00分中的1.00分假设栈初始为空,将中缀表达式a/b+(c*d-e*f)/g转换为等价的后缀表达式的过程中,当扫描到f时,栈中的元素依次是()。
选择⼀项:a. +(*—b. +(—*c. /+—*d. /+(*—*反馈correct feedback正确答案是:+(—*正确此次提交得分:1.00/1.00。
题⽬4正确获得1.00分中的1.00分标记题⽬题⼲⼀个栈的⼊栈序列为1,2,3,…,n,其出栈序列是p1,p2,p3,…,pn。
如果p2=3,则p3可能取值的个数是( )。
选择⼀项:a. ⽆法确定b. n-3c. n-2d. n-1反馈correct feedback正确答案是:n-1正确此次提交得分:1.00/1.00。
题⽬5正确获得1.00分中的1.00分经过下列栈运算后,StackEmpty(S)的值是______。
InitStack(S);Push(S,a);Push(S,b);Pop(S,x);Pop(S,y)选择⼀项:a. ab. 1c. bd. 0反馈correct feedback正确答案是:1正确此次提交得分:1.00/1.00。
题⽬6正确获得1.00分中的1.00分标记题⽬题⼲设n个元素进栈序列是p1,p2,p3,…,pn,其输出序列是1,2,3,…,n,若p3=1,则p1的值______。
数据结构算法设计题

一、算法设计题1. 设二叉树bt采用二叉链表结构存储。
试设计一个算法输出二叉树中所有非叶子结点,并求出非叶子结点的个数。
【答案】int count=0;void algo2(BTNode *bt){if (bt){if(bt->lchild || bt->rchild){printf(bt->data);count++;}algo2(bt->lchild);algo2(bt->rchild);}}2. 阅读下列函数arrange()int arrange(int a[],int 1,int h,int x){//1和h分别为数据区的下界和上界int i,j,t;i=1;j=h;while(i<j){while(i<j && a[j]>=x)j--;while(i<j && a[j]>=x)i++;if(i<j){ t=a[j];a[j]=a[i];a[i]=t;}}if(a[i]<x) return i;else return i-1;}(1)写出该函数的功能;(2)写一个调用上述函数实现下列功能的算法:对一整型数组b[n]中的元素进行重新排列,将所有负数均调整到数组的低下标端,将所有正数均调整到数组的高下标端,若有零值,则置于两者之间,并返回数组中零元素的个数。
【答案】(1)该函数的功能是:调整整数数组a[]中的元素并返回分界值i,使所有<x的元素均落在a[1..i]上,使所有≥x的元素均落在a[i+1..h]上。
(2)int f(int b[],int n) 或 int f(int b[],int n){ {int p,q; int p,q;p=arrange(b,0,n-1,0); p=arrange(b,0,n-1,1);q= arrange(b,p+1,n-1,1); q= arrange(b,0,p,0);return q-p; return p-q;} }3. 假设线性表以带表头结点的循环单链表表示。
数据结构习题集

数据结构习题集第一章绪论1.1数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的关系和运算等的学科。
1.2 算法分析的目的是分析算法的效率以求该进,算法分析的两个主要方面是空间复杂度和时间复杂度。
1.3 计算机算法指的是解决问题的有限运算序列,它必须具备输入、输出和确定性、有穷性和可行性等5个重要特性。
第二章线性表2.32 下面关于线性表的叙述中,错误的是(B)A. 线性表采用顺序存储必须占用一片连续的存储单元B. 线性表采用顺序存储便于进行插入和删除操作C. 线性表采用链式存储不必占用一片连续的存储单元D. 线性表采用链式存储便于进行插入和删除操作第三章栈与队列一、选择题3.1 栈的特点是先进后出,队列的特点是先进先出。
3.4 判定一个栈ST(最多元素MaxSize)为空的条件是ST->top==-1。
3.8 一个队列的入队序列是1,2,3,4,则出队列的输出序列是1,2,3,4。
3.16一个队列的入队序列是1,2,3,4,则队列的输出序列是1,2,3,4。
3.18 若进栈序列为 1,2,3,4,,进栈过程中可以出栈,则以下不可能的出栈序列是3,1,4,23.1 栈和队列的区别仅在于____。
3.2 通常元素进栈的操作是____。
3.3通常元素退栈的操作是____。
3.4一个栈的输入序列是12345,则栈的输出序列43512是____。
3.5一个栈的输入序列是12345,则栈的输出序列12345是____。
第四章串4.1串是一种特殊的线形表,其特殊性体现在___B_A. 可以顺序存储B. 数据元素是一个字符C. 可以链接存储D. 数据元素可以是多个字符4.2 串的两种最基本的存储方式是顺序和链式。
4.3两个串相等的充分必要条件是:长度相等且对应位置上的字符相等。
4.4 空串是____,其长度等于____.4.5 串的三种机内表示方法是________、________、和___________。
数据结构与C语言程序设计试题及答案

6.在置换-选择排序中,假设工作区的容量为w,若不计输入、输出的时间,则对n个记录的文件而言,生成所有初始归并段所需时间为O(n log w)。
三.简答题(6’5)
1.有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问采用什么排序方法时间复杂度最佳?为什么?
采用基数排序方法最佳。
因单词长度相等,而只有26个字母组成,符合基数排序的条件。
因m<<n,故时间复杂性由O(m(n+rm))变成O(n)。
2.对于一个栈,给出输入序列A,B,C,试给出全部可能的输出序列。若输入序列的长度为n,则可能的输出序列有多少?
ABC,ACB,BAC,BCA,CBA
C2nn/(n+1)
()10、任何有向图的顶点都可以按拓扑序排序。
二.填空题(2’6)
1.假设用于通信的电文由8个字母组成,其频率分别为0.07,0.19,0.02,0.06, 0.32,0.03,0.21,0.10,为这8个字母设计哈夫曼编码,其中编码长度最大的字母的编码是5位。
2.已知二叉树按中序遍历所得到的结点序列为DCBGEAHFIJK,按后序遍历所得到的结点序列为DCEGBFHKJIA,按先序遍历所得到的结点序列为ABCDGEIHFJK。
O(n log n)
四.程序设计题(38’)
1.假设有两个集合A和B,均以元素值递增有序排列的带头结点的单链表作为存储结构。请编写算法求C=AB,要求C按元素值递增有序排列,并要求利用原表(即表A和表B)的结点空间存放表C。(12’)
void Join(LinkList &la , LinkList &lb , LinkList &lc)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录题目1:设计一元多项式简单计算 (1)题目2:链表应用1 (1)题目3:链表应用2 (1)题目4:通讯录 (2)题目5:停车场管理系统................................................ 错误!未定义书签。
题目6:约瑟夫环 (3)题目7:运动会分数统计 (3)题目8:文学研究助手问题 (3)题目9:银行业务模拟与离散事件模拟 (4)题目10:学生信息管理系统任务(用顺序表/链表)....... 错误!未定义书签。
题目11:文章编辑功能 ................................................. 错误!未定义书签。
题目12:实验室管理..................................................... 错误!未定义书签。
题目13:二叉树的基本操作(建立、求二叉树树深度、遍历).. (4)题目14:纸牌游戏任务 (5)题目15:算术表达式求值 (5)题目16:内部排序算法比较 (5)题目17:哈夫曼树的构造和哈夫曼编码/译码 (6)题目18:构造可以使n个城市连接的最小生成树 (7)题目19:交通咨询系统中的最短路径 (7)题目20:集合的交、并、差运算 ................................... 错误!未定义书签。
题目21:长整数四则运算 (7)题目22:机订票系统..................................................... 错误!未定义书签。
题目23:图书管理系统 (8)题目24:哈希表应用 (8)题目25:模拟旅馆管理系统的一个功能——床位的分配与回收 (9)题目26:地图着色问题 (9)题目27:俄罗斯套娃问题 (10)题目28:扫雷 (11)题目29:用C语言设计一个日历系统 (11)题目1:设计一元多项式计算【任务要求】(1)能够按照指数降序排列建立并输出多项式;(2)能够完成两个多项式的相加、相减,并将结果输入;实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。
要求:在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;【测试数据】自行选择题目2:链表应用1【任务要求】实现两个链表的合并基本功能要求:(1)建立两个链表A和B,链表元素个数分别为m和n个。
(2)假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。
把它们合并成一个线形表C,使得:当m>=n时,C=x1,y1,x2,y2,...xn,yn, (x)当n>m时,C=y1,x1,y2,x2,…ym,xm,…,yn输出线性表C(3)用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。
【测试数据】1) A表(30,41,15,12,56,80)B表(23,56,78,23,12,33,79,90,55)2) A表(30,41,15,12,56,80,23,12,34)B表(23,56,78,23,12)题目3:链表应用2【问题描述】已知非空线性链表第一个链结点的指针为list,写出下列各项操作的算法程序。
(1)逆转该线性链表;(2)删除线性链表中从左往右第一个数据为data的链结点;(3)删除从第I个链结点开始的连续k个结点。
【任务要求】设计一组输入数据并编写完整的程序。
调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果。
【提示】1)逆转一个链表是指在不增加新结点的前提下,依次改变链表中结点的连接方向。
2)删除数据结点时,首先判断链表是否为空,若非空,先判断第一个结点是否满足条件,若是则删除;否则从第二个结点开始顺序查找,直到找到为止,然后删除;对任何不满足条件的情况都报告相应提示信息。
3)从第I个结点开始连续删除k个结点时,考虑以下两种情况:当I=1时,从第一个开始删除即可;当I>1时,先找到前一个结点然后再连续删除K个结点。
最后释放各个结点空间。
【测试数据】自行设定题目4:通讯录【问题描述】该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。
该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。
通讯者所包含信息请自行设定【任务要求】菜单内容:(0)通讯录链表的建立(1)通讯者结点的插入(2)通讯者结点的查询(3)通讯者结点的删除(4)通讯录链表的输出(5)退出管理系统设计要求:使用0~5来选择菜单项,其他输入则不起作用。
功能函数设计5个不同功能的算法实现编程题,目的是练习利用链表结构来解决实际应用问题的能力,进一步理解和熟悉线形表的链式存储结构。
【测试数据】自行设定,注意边界等特殊情况。
题目6:约瑟夫环【问题描述】编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
【任务要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
输入数据:输入m的初值,n ,输入每个人的密码,建立单循环链表。
输出形式:建立一个输出函数,将正确的输出序列【测试数据】m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4。
题目7:运动会分数统计【问题描述】参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)【任务要求】功能要求:1).可以输入各个项目的前三名或前五名的成绩;2).能统计各学校总分,3).可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整型界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;【测试数据】1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;题目9:银行业务模拟与离散事件模拟【问题描述】假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。
由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户(建议:客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务;反之,若4个窗口均有窗户所占,他便会排在人数最少的队伍后面。
【任务要求】编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。
建议有如下设置:客户到达时间随机产生,一天客户的人数设定为100人。
银行业务员处理时间随机产生,平均处理时间10分钟。
将一天的数据(包括业务员和客户)以文件方式输出。
【测试数据】由随机数产生器生成题目13:二叉树的基本操作(建立、求二叉树树深度、遍历)【任务要求】要求输入二树的各个结点,求二叉树的树深度,并能够输出指定遍历方式(层序、先序、中序、后序)的遍历序列;分别建立;建立二叉树存储结构的的输入函数、求二叉树的树深度的函数、遍历序列的函数层序遍历(用队列的方法实现)中序遍历(用递归和非递归的方法一起都实现)先序遍历(用递归和非递归的方法一起都实现)后序遍历(用递归和非递归的方法一起都实现)题目14:纸牌游戏任务【问题描述】编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?【任务要求】采用合适的数据结构输出最后正面向上的牌,并将以2…52奇数翻牌的过程显示出来题目15:算术表达式求值【问题描述】在计算机中,算术表达式由常量、变量、运算符和括号组成。
由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。
因而在程序设计时,借助栈实现。
【任务要求】算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。
为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。
算法输出:表达式运算结果。
算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。
在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。
题目16:内部排序算法比较【问题描述】编制一个演示内部排序算法比较的程序。
利用随机函数产生30000个随机整数,利用冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序等排序方法进行排序,并统计每一种排序上机所花费的时间。
【任务要求】算法输入:以菜单的形式选择排序方法算法输出:不同情况下关键字参加的比较次数和关键字的移动次数,每一种排序上机所花费的时间。
算法要点:(1)利用随机函数产生30000个随机整数。
(2)利用不同排序方法排序并统计两类次数,列表显示(3)程序以对话方式执行。
题目17:哈夫曼树的构造和哈夫曼编码/译码【问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼码的编/译码系统。
【任务要求】一个完整的系统应具有以下功能:I:初始化(Initialization)。