知识大全 数据结构与算法概论复习习题[1]
Posted 操作
篇首语:世界再冷,你也要成为自己的太阳,无需别人的照亮,你就是自己的太阳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法概论复习习题[1]相关的知识,希望对你有一定的参考价值。
第 章 绪论
简述下列术语 数据 数据元素 数据对象 数据结构 存储结构 数据类型和抽象数据类型
解 数据是对客观事物的符号表示 在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称
数据元素是数据的基本单位 在计算机程序中通常作为一个整体进行考虑和处理
数据对象是性质相同的数据元素的集合 是数据的一个子集
数据结构是相互之间存在一种或多种特定关系的数据元素的集合
存储结构是数据结构在计算机中的表示
数据类型是一个值的集合和定义在这个值集上的一组操作的总称
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作 是对一般数据类型的扩展
试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别
解 抽象数据类型包含一般数据类型的概念 但含义比一般数据类型更广 更抽象 一般数据类型由具体语言系统内部定义 直接提供给编程者定义用户数据 因此称它们为预定义数据类型 抽象数据类型通常由编程者定义 包括定义它所使用的数据和在这些数据上所进行的操作 在定义抽象数据类型中的数据部分和操作部分时 要求只定义到数据的逻辑结构和操作说明 不考虑数据的存储结构和操作的具体实现 这样抽象层次更高 更能为其他用户提供良好的使用接口
设有数据结构(D R) 其中
D=d d d d R=r r=(d d ) (d d ) (d d )
试按图论中图的画法惯例画出其逻辑结构图
解
试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子 分母均为自然数且分母不为零的分数)
解
ADT Complex
数据对象 D=r i|r i为实数
数据关系 R=<r i>
基本操作
InitComplex(&C re im)
操作结果 构造一个复数C 其实部和虚部分别为re和im
DestroyCmoplex(&C)
操作结果 销毁复数C
Get(C k &e)
操作结果 用e返回复数C的第k元的值
Put(&C k e)
操作结果 改变复数C的第k元的值为e
IsAscending(C)
操作结果 如果复数C的两个元素按升序排列 则返回 否则返回
IsDescending(C)
操作结果 如果复数C的两个元素按降序排列 则返回 否则返回
Max(C &e)
操作结果 用e返回复数C的两个元素中值较大的一个
Min(C &e)
操作结果 用e返回复数C的两个元素中值较小的一个
ADT Complex
ADT RationalNumber
数据对象 D=s m|s m为自然数 且m不为
数据关系 R=<s m>
基本操作
InitRationalNumber(&R s m)
操作结果 构造一个有理数R 其分子和分母分别为s和m
DestroyRationalNumber(&R)
操作结果 销毁有理数R
Get(R k &e)
操作结果 用e返回有理数R的第k元的值
Put(&R k e)
操作结果 改变有理数R的第k元的值为e
IsAscending(R)
操作结果 若有理数R的两个元素按升序排列 则返回 否则返回
IsDescending(R)
操作结果 若有理数R的两个元素按降序排列 则返回 否则返回
Max(R &e)
操作结果 用e返回有理数R的两个元素中值较大的一个
Min(R &e)
操作结果 用e返回有理数R的两个元素中值较小的一个
ADT RationalNumber
试画出与下列程序段等价的框图
( ) product= ; i= ;
while(i<=n)
product *= i;
i++;
( ) i= ;
do
i++;
while((i!=n) && (a[i]!=x));
( ) switch
case x<y: z=y x; break;
case x=y: z=abs(x*y); break;
default: z=(x y)/abs(x)*abs(y);
cha138/Article/program/sjjg/201311/23630
相关参考
在程序设计中常用下列三种不同的出错处理方式 ()用exit语句终止执行并报告错误 ()以函数的返回值区别正确返回或错误返回
试写一算法对单链表实现就地逆置 解 //带头结点的单链表的逆置 StatusListOppose_L(LinkList&L) LinkListpq; p=L; p=p>
已知AB和C为三个递增有序的线性表现要求对A表作如下操作删去那些既在B表中出现又在C表中出现的元素试对顺序表编写实现上述操作的算法并分析你的算法的时间复杂度(注意题中没有特别指明同一表中的元素值各
第章 线性表 描述以下三个概念的区别头指针头结点首元结点(第一个元素结点) 解头指针是指向链表中第一个结点的指针首元结点是指链表中存储第一个数据元素的结点头结点是在首元结点之前附设的
指出以下算法中的错误和低效之处并将它改写为一个既正确又高效的算法 StatusDeleteK(SqList&aintiintk) //本过程从顺序存储结构的线性表a中删除第i个元素
已知指针la和lb分别指向两个无头结点单链表中的首元结点下列算法是从表la中删除自第i个元素起共len个元素后将它们插入到表lb中第i个元素之前试问此算法是否正确?若有错请改正之 StatusD
要求同题试对单链表编写求C的算法 解 //将AB求交后的结果放在C表中并删除B表 StatusListCross_L(Li
对题的条件作以下两点修改对单链表重新编写求得表C的算法 ()假设在同一表(A或B)中可能存在值相同的元素但要求新生成的表C中的
假设在算法描述语言中引入指针的二元运算异或若a和b为指针则a⊕b的运算结果仍为原指针类型且 a⊕(a⊕b)=(a⊕a)⊕b=b
已知有一个单向循环链表其每个结点中含三个域predata和next其中data为数据域next为指向后继结点的指针域pre也为指