严魏敏-习题-01

严魏敏习题

1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素:数据的基本单位。在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。
数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
数据对象:有相同性质的数据元素的集合,是数据的一个子集。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。
存储结构:数据对象在计算机中的存储表示,也称为物理结构。
抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。
具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两个层次的含义及相互关系。

例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录
对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。
学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。
 
这些学生记录在计算机中的存储表示就是存储结构。
如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;
如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。
 
即相同的逻辑结构,可以对应不同的存储结构。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

(1)集合结构
	数据元素之间除了“属于同一集合”的关系外,别无其他关系。
	例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。
	(2)线性结构
	数据元素之间存在一对一的关系。
	例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。
(3)树结构
	数据元素之间存在一对多的关系。
	例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。
(4)图结构或网状结构
	数据元素之间存在多对多的关系。
	例如,多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图形结构或网状结构。
 	其中树结构和图结构都属于非线性结构。

在这里插入图片描述

4.存储结构由哪两种基本的存储方法实现?

(1)顺序存储结构

顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,
通常借助程序设计语言的数组类型来描述。

(2)链式存储结构

顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。
但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。
所以链式存储结构通常借助于程序设计语言的指针类型来描述。

5.选择题

(1)在数据结构中,从逻辑上可以把数据结构分成( C )。
A. 动态结构和静态结构
B. 紧凑结构和非紧凑结构
C. 线性结构和非线性结构
D. 内部结构和外部结构

(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的( C )。
A. 存储结构
B. 存储实现
C. 逻辑结构
D. 运算实现

(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着( B )。
A. 数据具有同一特点
B. 不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
C. 每个数据元素都一样
D. 数据元素所包含的数据项的个数要相等

(4)以下说法正确的是( D )。
A. 数据元素是数据的最小单位
B. 数据项是数据的基本单位
C. 数据结构是带有结构的各数据项的集合
D. 一些表面上很不相同的数据可以有相同的逻辑结构

(5)算法的时间复杂度取决于( D )。
A. 问题的规模
B. 待处理数据的初态
C. 计算机的配置
D. A和B

(6)以下数据结构中,( A )是非线性数据结构。
A. 树
B. 字符串
C. 队列
D. 栈

6.试分析下列各算法的时间复杂度。

(1)x=90; y=100;
while(y>0)
if(x>100)
{x=x-10;y–;}
else x++;

答案:O(1)

解释:程序的执行次数为常数阶。

(2)for(i=0; i<n; i++)
for(j=0; j<m; j++)
a[i][j]=0;
O(MN)

(3)s=0;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
s+=B[i][j];
sum=s;
O(n^2)

(4)i=1;
while(i<=n)
i=i*3;
答案:O(log3n)

解释:语句i=i*3;的执行次数为log3n (有关对数公式:如果ax = N,记做 x = logaN) ;设 i = i*3 执行了 x 次,则 3x = n ;故 x = log3n

(5)x=0;
for(i=1; i<n; i++)
for(j=1; j<=n-i; j++)
x++;
答案:O(n2)

解释:语句x++;的执行次数为 n-1+n-2+……+1= n(n-1)/2。
i = 1 时,循环执行 n-1 次
i = 2 时,循环执行 n-2 次,
i = 3 时,循环执行 n-3 次,

i = n-1 时,循环执行 1 次
则相加: (n-1)+(n-2)+(n-3)+…+3+2+1 = n(n-1)/2
一共有 n-1 个式子,前后相加等于 n ,则总和为 n(n-1)/2

(6)x=n; //n>1
y=0;
while(x≥(y+1)*(y+1))
y++;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值