数据结构 第一章 绪论 作业(已批改)

判断题

1-1
数据项是数据的最小单位。

T F

课本P3

1-2
数据元素是数据的最小单位。

T F

课本P3

1-3
数据的逻辑结构是指数据的各数据项之间的逻辑关系。

T F

课本P4:数据的逻辑结构是指数据的数据元素之间的逻辑关系;
数据元素是数据的基本单位;
数据项是组成数据元素、有独立含义的、不可分割的最小单位;
数据对象是性质相同的数据元素的集合,是数据的一个子集;

1-4
数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。

T F
在这里插入图片描述
1-5
数据的逻辑结构与数据元素本身的内容和形式无关。

T F

1-6
数据元素可以由类型互不相同的数据项构成。

T F

课本P3参考数据元素和数据项的定义;

1-7
数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构。

T F

课本P4:数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

1-8
算法独立于具体的程序设计语言,与具体的计算机无关。

T F

1-9
算法和程序没有区别,在数据结构中二者是通用的。

T F

1-10
算法的优劣与算法描述语言无关,但与所用计算机有关。

T F

课本P11:时间复杂度和空间复杂度是衡量算法的两个主要指标;

单选题

2-1
被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的这种关系称为

A.规则
B.结构
C.集合
D.运算

课本P4:数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系;

2-2
以下关于数据结构的说法中错误的是( )。

A.数据结构相同,对应的存储结构也相同
B.数据结构涉及数据的逻辑结构、存储结构和施加其上的操作3个方面
C.数据结构操作的实现与存储结构有关
D.定义逻辑结构时可不考虑存储结构

数据结构相同,逻辑结构要相同,但逻辑结构的实现可以用不同的存储结构;

2-3
以下关于数据结构的说法中正确的是( )。

A.数据结构的逻辑结构独立于其存储结构
B.数据结构的存储结构独立于该数据结构的逻辑结构
C.数据结构的逻辑结构唯一地决定了该数据结构的存储结构
D.数据结构仅由其逻辑结构和存储结构决定

B. 存储结构: 数据的逻辑结构用计算机语言的实现;
C. 数据的逻辑结构和存储结构是数据结构的两个密切相关的方面,同一逻辑结构可以对应不同的存储结构;
D. 数据结构概念包括数据之间的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面;

2-4
以下数据结构中,( )是非线性数据结构。

A.树
B.字符串
C.队列
D.栈

课本P4-5:
数据的逻辑结构:
1、线性结构:线性表、栈、队列、字符串、数组、广义表;
2、非线性结构:树、二叉树、有向图、无向图;

2-5
从逻辑上可将数据结构分为( )。

A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.内部结构和外部结构
D.线性结构和非线性结构

2-6
下面关于抽象数据类型的描述,不正确的是( )。

A.数据封装
B.使用与实现分离
C.信息隐藏
D.用例驱动

课本P7:抽象数据类型独立于具体实现,将数据和操作封装在一起,使得用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,从而实现了信息隐藏;

2-7
下面程序的时间复杂度为()。

for(i = 0; i < m; i++)
     for(j = 0; j < n; j++ )
          A[i][j] = i*j;

A.O(m^2​​)
B.O(n^​2​​)
C.O(m × n)
D.O(m + n)

2-8
算法的时间复杂度与( )有关。

A.问题规模
B.计算机硬件的运行速度
C.源程序的长度
D.编译后执行程序的质量

课本P11:不考虑计算机的软硬件等环境因素,影响算法时间代价的主要因素是问题规模;

2-9
某算法的时间复杂度是O(n^2),表明该算法的( )。

A.问题规模是n​^2
B.问题规模与n^​2成正比
C.执行时间等于n^​2​
D.执行时间与n​^2成正比

2-10
设计数据结构和算法

A.数据结构就是程序
B.算法+数据结构=程序
C.算法=数据结构+程序
D.算法就是程序

编程题

7-1 温度转换 (5分)

本题要求编写程序,计算华氏温度150°F对应的摄氏温度。计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型。

输入格式:
本题目没有输入。

输出格式:
按照下列格式输出

fahr = 150, celsius = 计算所得摄氏温度的整数值
public class Main {

	public static void main(String[] args) {
		int F = 150;
		int C;
		C = 5 * (F - 32) / 9;
		System.out.println("fahr = " + F + ", celsius = " + C);
	}
}

7-2 整数四则运算 (10分)

本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

输入格式:
输入在一行中给出2个正整数A和B。

输出格式:
在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

输入样例:

3 2

输出样例:

3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int A = input.nextInt();
		int B = input.nextInt();
		int add = A + B;
		int minus = A - B;
		int multiply = A * B;
		int divide = A / B;
		System.out.println(A + " + " + B + " = " + add);
		System.out.println(A + " - " + B + " = " + minus);
		System.out.println(A + " * " + B + " = " + multiply);
		System.out.println(A + " / " + B + " = " + divide);
	}
}

7-3 求最大、次大和第3大的值 (25分)

本题目要求读入n个整数,要求用最少的比较次数,输出它们的最大值、第2大的值和第3大的值。例如,对于13 13 1 10 34 10这6个数,最大值为34,第2大的值为13,第3大的值为10。

输入格式:
输入有两行。第一行为整数个数n(≤1 000 000),第二行给出n个以空格分隔的整数。

输出格式:
对每一组输入,在一行中输出最大值、第2大的值和第3大的值值,中间以一个空格分隔,但行尾没有多余空格。 如果输入数据不足三个,则输出“Invalid Input”。 如果没有第3大的值,则输出“There is no third largest element”。 如果没有第2大和第3大的值,则输出“There is no second largest and third largest element”。

输入样例:

6
13 13 1 10 34 10 

输出样例:

34 13 10 
#include<bits/stdc++.h>
using namespace std;

#define Max 10000000 
int main(){
 long long int n;                
 long long int t,i;      
 long long int med=-Max,min=-Max;
 long long int max=-Max;         
 //如果输入的数字比-10000000还小怎么办??
 scanf("%lld",&n);
 if(n<3)
 {
  printf("Invalid Input");  
  return 0;
 }
 for(i=0;i<=n-1;i++) 
 {
  scanf("%lld",&t);
  if(t>max && t!=max && t!=min && t!=med)//首先先与最大的数字进行比较 
  {
   min=med;     
   med=max;  
   max=t; 
   continue; 
  } 
  if(t>med && t!=max && t!=min && t!=med) //一系列数中,可能会有相同数字 
  {
   min=med; 
   med=t;
   continue;
  }
  if(t>min && t!=max && t!=min && t!=med)
  {
   min=t;
   continue;
  }
 }
 
 if(min==med && min==-Max)                  //这种情况会出现在所有数都一样的情况下 
 {
  printf("There is no second largest and third largest element");
  return 0;
 }
 if(min==-Max)  //一般情况,没有第三大的数字 
 {
  printf("There is no third largest element");
  return 0;
 }
 if(med==-Max)//一般情况,没有第二和第三大的数字 
 {
  printf("There is no second largest and third largest element");
  return 0;
 }
 printf("%lld %lld %lld",max,med,min);
 return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值