数据结构实验题目数据结构实验题目09级

合集下载

数据结构表达式求值实验报告

数据结构表达式求值实验报告

竭诚为您提供优质文档/双击可除数据结构表达式求值实验报告篇一:数据结构实验二——算术表达式求值实验报告《数据结构与数据库》实验报告实验题目算术表达式求值学院:化学与材料科学学院专业班级:09级材料科学与工程系pb0920603姓学邮名:李维谷号:pb09206285箱:指导教师:贾伯琪实验时间:20XX年10月10日一、需要分析问题描述:表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。

设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。

问题分析:在计算机中,算术表达式由常量、变量、运算符和括号组成。

由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。

因而在程序设计时,借助栈实现。

设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。

在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。

在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。

算法规定:输入形式:一个(:数据结构表达式求值实验报告)算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。

为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。

输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。

程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。

测试数据:正确输入:12*(3.6/3+4^2-1)#输出结果:194.4无定义运算:12*(3.6/(2^2-4)+1)#输出结果:表达式出错,除数为0,无意义错误输入:12+s#输出结果:eRRoR!二、概要设计拟采用两种类型的展分别对操作数和操作符进行操作。

2009年《数据结构》试卷A答案

2009年《数据结构》试卷A答案

西华大学课程考试参考答案(A卷)课程代码: 8401801 试卷总分: 100 分一、单项选择题参考答案及评分标准:(本大题共20个小题,每小题2分,共40分)评分标准:选对一题得2分,不选或选错得0分。

1-5:CBACC 6-10:CCBDB 11-15:ABCCD 16-20:CADDC二、算法理解题参考答案及评分标准:(本大题共3个小题,第1、2小题各7分,第3小题6分,共20分)评分标准:请根据各解答步骤酌情给分。

1. 解:构造过程各图(略),最后结果为:2. 解:设权w=(5,29,7,8,14,23,3,11),可构造一棵赫夫曼树如下图所示。

所得赫夫曼编码为:A: 0110B: 10C: 1110D: 1111E: 110F: 00G: 0111H: 0103. 解:(1)希尔排序第一趟(增量d=5)排序后 7、12、36、23、12、51、60、55、72、49第二趟(增量d=3)排序后 7、12、36、23、12、51、49、55、72、60第三趟(增量d=1)排序后 7、12、12、23、36、49、51、55、60、72(2)归并排序第一趟排序后 12、51、23、55、7、49、36、60、12、72第一趟排序后 12、23、51、55、7、36、49、60、12、72第三趟排序后 7、12、23、36、49、51、55、60、12、72第四趟排序后 7、12、12、23、36、49、51、55、60、72三、算法设计题参考答案及评分标准:(本大题共4个小题,每小题10分,共40分)评分标准:请根据编程情况酌情给分。

1. 参考答案示例:void DelInsert(LinkList &L){∥本算法将带头结点的非空单链表L中数据域值最小的那个结点移到链表的最前面。

p=L->next;∥p是链表的工作指针pre=L;∥pre指向链表中数据域最小值结点的前驱。

q=p;∥q指向数据域最小值结点,初始假定是首元结点while (p->next!=NULL){ if(p->next->data<q->data){ pre=p;q=p->next;} ∥找到新的最小值结点 p=p->next;}if (q!=L->next){ pre->next=q->next;∥将最小值结点从链表上摘下q->next= L->next;∥将q结点插到链表最前面L->next=q;}}//DelInsert2. 参考答案示例:void Count(BiTree T,int &n0,int &n){//统计二叉树T上叶结点数n0和非叶结点数n。

数据结构考试试题库含答案解析

数据结构考试试题库含答案解析

数据构造习题集含答案目录目录 (1)选择题 (2)第一章绪论 (2)第二章线性表 (4)第三章栈和队列 (6)第四章串 (7)第五章数组和广义表 (8)第六章树和二叉树 (8)第七章图 (11)第八章查找 (13)第九章排序 (14)简答题 (19)第一章绪论 (19)第二章线性表 (24)第三章栈和队列 (26)第四章串 (28)第五章数组和广义表 (29)第六章树和二叉树 (31)第七章图 (36)第八章查找 (38)第九章排序 (39)编程题 (41)第一章绪论 (41)第二章线性表 (41)第三章栈和队列 (52)第四章串 (52)第五章数组和广义表 (52)第六章树和二叉树 (52)第七章图 (52)第八章查找 (52)第九章排序 (57)选择题第一章绪论1.数据构造这门学科是针对什么问题而产生的?〔A〕A、针对非数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与非数值计算的问题都针对D、两者都不针对2.数据构造这门学科的研究内容下面选项最准确的是〔D〕A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3.某班级的学生成绩表中查得X三同学的各科成绩记录,其中数据构造考了90分,那么下面关于数据对象、数据元素、数据项描述正确的选项是〔C〕A、某班级的学生成绩表是数据元素,90分是数据项B、某班级的学生成绩表是数据对象,90分是数据元素C、某班级的学生成绩表是数据对象,90分是数据项D、某班级的学生成绩表是数据元素,90分是数据元素4.*数据构造是指〔A〕。

A、数据元素的组织形式B、数据类型C、数据存储构造D、数据定义5.数据在计算机存储器内表示时,物理地址与逻辑地址不一样,称之为〔C〕。

A、存储构造B、逻辑构造C、链式存储构造D、顺序存储构造6.算法分析的目的是〔C〕A、找出数据的合理性B、研究算法中的输入和输出关系C、分析算法效率以求改良D、分析算法的易懂性和文档型性7.算法分析的主要方法〔A〕。

数据结构真题2009年下半年

数据结构真题2009年下半年

数据结构真题2009年下半年(总分:124.98,做题时间:90分钟)一、{{B}}单项选择题{{/B}}(总题数:15,分数:30.00)1.按值可否分解,数据类型通常可分为两类,它们是 ( )(分数:2.00)A.静态类型和动态类型B.原子类型和表类型C.原子类型和结构类型√D.数组类型和指针类型解析:[解析] 按“值”是否可分解,可将数据类型划分为两类:原子类型,其值不可分解;结构类型,其值可分解为若干个成分。

2.对于三个函数f(n)=2008n3+8n2+96000,g(n)=8n3+8n+2008和h(n)=8888nlogn+3n2,下列陈述中不成立的是 ( )(分数:2.00)A.f(是O(g()B.g(是O(f()C.h(是O(nlog √D.h(是O(n2)解析:[解析] 当n充分大时,由题意可得:f(n)与n3是同阶的,g(n)与n3是同阶的,h(n)与n2是同阶的。

所以f(n)=O(g(n)),g(n)=O(f(n)),h(n)=O(n2)。

3.指针p、q和r依次指向某循环链表中三个相邻的结点,交换结点*q和结点*r在表中次序的程序段是( ) (分数:2.00)A.p—>next=r; q—>next=r—>next; r—>next=q; √B.p—>next=r; r—>next=q; q—>next=r—>next;C.r—>next=q; q—>next=r—>next; p—>next=r;D.r—>next=q; p—>next=r; q—>next=r—>next;解析:4.若进栈次序为a,b,e,且进栈和出栈可以穿插进行,则可能出现的含3个元素的出栈序列个数是 ( ) (分数:2.00)A.3B.5 √C.6D.7解析:5.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位置、尾指针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为 ( )(分数:2.00)A.rear==frontB.(front+1)%n==rearC.rear+1==frontD.(rear+1)%n==front √解析:[解析] 在循环队列中,在少用一个元素空间的前提下,可约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为队满。

数据结构样卷答案09级

数据结构样卷答案09级

③ 改正:函数体最后增加以下一句: element[len] = '\0'; (3) 深拷贝创建二叉树时,没有为各结点建立指向父母结点的链。改正如下: ① 当 TriNode 构造函数不指定 parent 时 template <class T> TriNode<T>* TriBinaryTree<T>::copy(TriNode<T> *p) { TriNode<T> *q=NULL; if (p!=NULL) { q = new TriNode<T>(p->data); q->left = copy(p->left); if (q->left!=NULL) q->left->parent = q; q->right = copy(p->right); if (q->right!=NULL)
//一次匹配
} if (q!=NULL) { front=start; start=start->next; } else { q=list.head->next;
南京工程学院
试题评分标准及参考答案(样)
2010 / 2011 学年第 2 学期 课程所属部门: 计算机工程学院 使用班级:计算机专业 2009 级各班 课程名称: 数据结构 制作人:叶核亚、黄纬 2011 年 5 月 24 日 共7页 第 1 页
一.
(2) (3) (4) (5) (6) (7)
填空题(26 分,每空 2 分)
pk 与 p j 比较
0 a -1
1 b 0 ≠
2 c 0 ≠ 0
3 a 0 = -1
4 a 1 = 1

数据结构-9_真题(含答案与解析)-交互

数据结构-9_真题(含答案与解析)-交互

数据结构-9(总分100, 做题时间90分钟)一、单项选择题在每小题列出的四个选项中只有一个选项是符合题目要求的1.如果待排序的记录的规模很大,则在下面的排序方式中,我们最好不要选择使用( )SSS_SINGLE_SELA 快速排序B 直接插入排序C 堆排序D 归并排序分值: 2答案:B2.设数组A[0,m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行入队操作的语句是( )SSS_SINGLE_SELA sfront=(sfront+1)%mB sfront=(sfront+1)%(m+1)C srear=(srear+1)%mD srear=(srear+1)%(m+1)分值: 2答案:D3.线性表若采用链表存储结构时,要求内存中可用存储单元的地址( ) SSS_SINGLE_SELA 必须是连续的B 部分地址必须是连续的C 一定是不连续的D 连续不连续都可以分值: 2答案:D4.串是一种特殊的线性表,其特殊性体现在( )SSS_SINGLE_SELA 可以顺序存储B 数据元素是一个字符C 可以链接存储D 数据元素可以是多个字符分值: 2答案:B5.对广义表((a),(b))进行下面的操作head(head((a),(b)))后的结果是( )SSS_SINGLE_SELA aB (C ( )D 不确定分值: 2答案:A6.将含有83个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对结点编号,那么编号为41的结点的双亲结点编号为( )SSS_SINGLE_SELA 42B 40C 21D 20分值: 2答案:D7.带头结点的单链表Head为空的判定条件是( )SSS_SINGLE_SELA Head=NULL;B Head↑.next=NULL;C Head↑.nextHead;D Head↑.next=Head↑分值: 2答案:B8.堆是一个键值序列(k1,k2,k…,k1…,k),对i=1,2…,[n/2],满足( )SSS_SINGLE_SEL Ak i ≤k2i≤k2i+1Bk i <k2i<k2i+1Ck i ≤k2i且k≤k2i+1(2i+1≤Dk i ≤k2i或ki≤k2i+l(2i+1≤分值: 2答案:C9.链栈与顺序栈相比,有一个比较明显的优点即( )SSS_SINGLE_SELA 插入操作更加方便B 通常不会出现栈满的情况C 不会出现栈空的情况D 删除操作更加方便分值: 2答案:B10.判断一个有向图是否存在回路,除了可以利用拓扑排序方法,还可以利用( )SSS_SINGLE_SELA 求关键路径的方法B 求最短路径的Dijkstra方法C 广度优先遍历方法D 深度优先遍历方法分值: 2答案:D11.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的( )SSS_SINGLE_SELA 前序B 中序C 后序D 层次序分值: 2答案:B12.假设有一个数组,它的行号从0到8,列号从0到10,数组中每个元素所占的存储空间为3个单元,则现在将此数组从某一个地址开始连续存放在一个存储器中,试问至少需要( )个存储单元才能完全将此数组存放进去。

南京工程的学院大数据结构样卷09级加详解

南京工程的学院大数据结构样卷09级加详解

数据结构09一. 填空题〔26分,每空2分〕1. 声明抽象数据类型的目的是________________________________________。

2. 结点类Node<T>有data和next域,如下数据存储结构声明分别为__________________________________和_____________________________________。

3. SString s1("aababbabac"),s2("aba");,执行如下语句后,s1字符串是______________。

s1.replaceAll(s1.substring(0,1),s2);s1.removeAll(s2.substring(0,2));4. 中缀表达式A+B*(C-D*(E+F)/G+H)-(I+J)*K的后缀表达式为______________________。

5. 设一个顺序循环队列容量为60,当front=47,rear=23时,该队列有__________个元素。

6. 二维数组a[10][8]采用行主序存储,数组首地址是1000,每个元素占用4字节,如此数组元素a[4][5]的存储地址是__________________________。

7. 一棵完全二叉树的根〔第0个〕结点层次为1,如此第100个结点的层次为_______。

8. 中根遍历序列和后根遍历序列相反的二叉树是_________________________________。

9. 由256个权值构造一棵哈夫曼树,如此该二叉树共有________________结点。

10. 由n个顶点组成的无向连通图,最多可以有_____________________条边。

11. 10个元素的排序数据序列采用折半查找的平均查找长度是〔写出算式〕_____________________________________________________。

数据结构试题

数据结构试题

二、填空题(每空 2 分,共 18 分) 1. 设 r 指向单链表的最后一个结点,要在最后一个结点之后插入 s 所指的结点,需执行的三条语句是____ r=s; r->next=null;。 。 _______;
2. 二叉树中度为 0 的结点数为 50,度为 1 的结点数为 30,总结点为 3.在拓扑排序中,拓扑排序的第一个顶点必定是 的顶点。
青岛理工大学试卷纸

4 页
第 3 页
学号;
姓名:
班级:
..........................................................密.......................................................封..........................................................线..........................................................
教师试做时间 出题单位 考试成绩期望值
80 80
出题教师 使用班级 印刷份数
尹海丽
电子 091-2
取题时间 考试日期 规定完成时间 110 分
审核
教研室主任 系(部)主任
交教务科印刷日期
学号; 姓名: 班级: ..........................................................密.......................................................封...........................................................线.......................................................... 专业 电子 年级 091-2 班 2010 ~2011 学年第 二 学期 算法与数据结构 课试卷 试卷类型:A 卷 题号 得分 一 二 三 四 五 六 七 八 九 十 总成绩
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一线性表的顺序存储实验
一、实验目的
1、掌握用Visual C++6.0上机调试顺序表的基本方法
2、掌握顺序表的基本操作,插入、删除、查找等算法的实现
二、实验内容
1、顺序表基本操作的实现
[问题描述] 当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。

若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。

[基本要求] 要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。

实验二单链表实验
一、实验目的
1、掌握用Visual C++6.0上机调试单链表的基本方法
2、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现
二、实现内容
1、单链表基本操作的实现
[问题描述]要在带头结点的单链表h中第i个数据元素之前插入一个数据元素x ,首先需要在单链表中寻找到第i-1个结点并用指针p
指示,然后申请一个由指针s 指示的结点空间,并置x为其数据域值,最后修改第i-1个结点,并使x结点的指针指向第i个结点,要在带头结点的单链表h中删除第i个结点,首先要计数寻找到第i个结点并使指针p指向其前驱第i-1个结点,然后删除第i个结点并释放被删除结点空间。

[基本要求]用链式存储结构实现存储
[实现提示]链式存储结构不是随机存储结构,即不能直接取到单链表中某个结点,而要从单链表的头结点开始一个一个地计数寻找。

2、求表长以及有序单链表的合并算法的实现
[问题描述] 假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。

请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并计算表长。

要求利用原来两个单链表的结点存放归并后的单链表。

[基本要求]用链式存储结构实现存储
实验三栈的实现及应用
一、实验目的
1、掌握顺序栈的类型定义方法。

2、掌握在顺序栈上实现的六种基本算法。

2、掌握顺序栈的简单应用。

二、实验内容
1、利用顺序栈将一个非负的十进制整数N转换为对应的B进制数。

[基本要求]非负的十进制整数N和B都从键盘输入;转换结果从屏幕输出。

实验四队列的实现及应用
一、实验目的
1、掌握队列的类型定义方法。

2、理解和掌握循环队列解决假溢出的方法。

二、实验内容
1、利用循环队列模拟舞伴配对问题:在舞会上,男、女各自排成一队。

舞会开始时。

依次从男队和女队的队头各出一人配成舞伴。

如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。

2、假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。

试模拟解决上述舞伴配对问题。

3、要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。

实验五树的基本操作
一、实验目的
1、进一步掌握指针变量、动态变量的含义。

2、掌握二叉树的结构特性,以及各种存储结构的特点和适用范
围。

3、掌握用指针类型描述、访问和处理二叉树的运算。

二、实验内容
1、以二叉链表作存储结构,试编写前序、中序、后序遍历二叉树的算法。

2、赫夫曼树的算法。

(可选作)
实验六图的基本操作
一、实验目的
1、掌握图的存储方式
2、掌握图的相关操作
二、实验内容
1、实现无向图的广度优先遍历。

2、最短路径算法。

(可选作)
实验七查找
一、实验目的
1、掌握查找的不同方法,并能用高级语言实现查找算法。

2、熟练掌握顺序表的查找方法和有序顺序表的折半查找算法以及静态查找树的构造方法和查找算法。

3、掌握二叉排序树的生成、插入、删除、输出运算。

二、实验内容
1、有序顺序表的二分查找的递归算法
实验八排序
一、实验目的
1、掌握排序的不同方法,并能用高级语言实现排序算法
二、实验内容
1、实现希尔排序算法。

2、实现快速和堆排序算法。

(可选作)
注:实验报告的要求听从带实验的老师具体要求。

相关文档
最新文档