【期末不挂科 数据结构】绪论习题(详解更新中)

本文分享了数据结构【Java描述】第一章后的习题,涵盖概念题如数据结构的三个方面、常见结构特性及存储结构示例,还有算法设计题和上机实践,旨在帮助学生巩固理解并提升技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同学们好啊~学完 【期末不挂科 数据结构】第一章 绪论 后,让我们一起来做一下习题巩固提升一下吧!

本习题为书本《数据结构——Java语言描述》课后习题

一、概念题

1.试述数据结构研究的三个方面的内容

参考答案:数据结构研究的3个方面分别是数据的逻辑结构数据的存储结构数据的运算(操作)

2.试述集合、线性结构、树型结构和图型结构四种常用数据结构的特性。

参考答案:
集合结构:集合中数据元素之间除了“同属于一个集合”的特性外,数据元素之间无其它关系,它们之间的关系是松散性的。
线性结构:线性结构中数据元素之间存在“一对一”的关系。即若结构非空,则它有且仅有一个开始结点和终端结点,开始结点没有前趋但有一个后继,终端结点没有后继但有一个前趋,其余结点有且仅有一个前驱和一个后继。
树形结构:树形结构中数据元素之间存在“一对多”的关系。即若结构非空,则它有一个称为根的结点,此结点无前驱结点,其余结点有且仅有一个前驱,所有结点都可以有多个后继。
图形结构:图形结构中数据元素之间存在“多对多”的关系。即若结构非空,则在这种数据结构中任何结点都可能有多个前驱和后继。

3.设有数据的逻辑结构的二元组定义形式为B=(D,R),其中D={a₁,a₂,......aₙ },R={<   ​​​​​​​, ​​​​​​​>∣ i=1,2......n-1},请画出此逻辑结构对应的顺序存储结构和链式存储结构的示意图

参考答案:

 4.设一个数据结构的逻辑结构如图1.9所示,请写出它的二元组定义形式。

 参考答案:

 

 (有的同学对我们绪论学习中的例题2-3不太理解,可以结合这道题在深刻体会一下“多对多”的图状结构哦)

 5.设有函数f(n)=3n²-n+4,请证明f(n)=O(n²)

参考答案:因为存在c=6,N=1,对所有的 n>=N,0<=3n²-n+4<=6×n² 都是恒成立的,所以由于义可知f(n)=O(n²)

 参考答案:1/log₂n<2¹ºº<log₂(log₂n)<log₂n<n½<n⅔<n<nlog₂n<n³/₂< ​​​​​​​<(4/3)ⁿ<(3/2)ⁿ<n!<nⁿ

 7.是确定下列程序段中标记符号“*”的语句行的语句频度(其中n为正整数)

// 1

i=1;k=0;
while(i<=n-1){
    k += 10 * i;    // * n-1
    i++;
}


// 2

i=1;k=0;
do{
    k += 10 * i;    // * 当n<=1时语句频度为1,当n>1时,语句频度为n-1
    i++;
}while(i<=n-1);


// 3

i=1;k=0;
while(i<=n-1){
    i++;
    k += 10 * i;    // * n-1
}


// 4

k = 0;
for(i=1;i<=n;i++){
    for(j=1;j<=i;j++)
        k++;        // * n(n+1)/2

// 5 

i =1; j =0;
 while ( i+j <= n ){
    if(i>j) j++;    // * n
    else i++;
}


// 6

x = n ; y =0;   // n 是不小于1的常数
 while ( x >= (y+1)*(y+1)){
     y ++;      // * 根号n取整 
}


// 7

x=91; y=100;
 while (y>0){
 if ( x >100){ x -=10; y--;}    // * 1100
else x++;


// 8

a=1;m=1;
while(a>n)
    {
        m+=a;a*=3;    // * log₃n
    }

关于// 4 中涉及的do...while循环语句: while和do..while循环的区别就在于do..while会先执行一次循环体,然后再判断条件,这样do..while的循环体至少执行一次。而while循环则是先判断条件是否合法,如果不合法,则循环体就没有任何执行的机会。想更多了解do while循环的同学们可以戳戳java do while 循环语句_Java do while循环语句 想了解不同循环的区别的同学们可以戳戳java-while循环-do while循环-死循环-嵌套for循环语句

 二、算法设计题

1.有一个包括100个数据元素的数组,每个数据元素的值都是实数,试编写一个求最大数
据元素的值及其下标的算法,并分析算法的时间复杂度。

三、上机实践题 

1.编写一个实现将整型数组中的数据元素按值递增的顺序进行排序的 Java 程序。

2.设计一个复数类,要求:

(1)在复数内部用双精度浮点数定义其实部和虚部。

(2)实现3个构造函数:第1个构造函数没有参数:第2个构造函数将双精度浮点数赋给复数的实部,虚部为0;第3个构造函数将两个双精度淫点数分别赋给复数的实部和虚部。

(3)编写获取和修改复数的实部和虚部的成员函数。

(4)编写实现复数的减法、乘法运算的成员函数。

(5)设计一个测试主函数,使其实际运行验证类中各成员函数的正确性。

( 一/7 的语句频度题+二+三习题 的答案详解还在更新中哦,同学们可以先自己做一下 ~)

如有任何错误希望大家可以多多指正哈~如果觉得我的文章写的还不错,可以给个三连!!!我也会按照自己的学习进度持续更新的哦~

最后希望大家都能通过数据结构这门考试并且有所收获,我们一起加油吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梨子想当程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值