计算机考研408真题2011年42题

这篇具有很好参考价值的文章主要介绍了计算机考研408真题2011年42题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、绪论

1、基本概念和术语

  • 数据:信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料

    • 对于计算机来说,它所能识别和处理的,在底层硬件看来就是二进制的0和1
    • 最初发明的计算机,就是用于处理纯数值型的问题的,即整数/小数的加减乘除一系列的数值运算
    • 现在的计算机,被用于处理很多非数值型的问题
      • 对于非数值型的问题,一般关注每个个体的具体信息以及个体与个体间的相互关系
      • 个体就是数据元素,个体的每个信息就是数据项
        • 对于个体到底是什么,具体得看在描述什么样一个问题,要对具体处理的问题进行分析
      • 个体之间的关系用数据结构来进行描述
  • 数据元素:数据的基本单位,通常作为一个整体进行考虑和处理

  • 数据项:一个数据元素可以由多个数据项来组成

    • 数据项是构成数据元素的不可分割的最小单位
    • 若一个数据项由多个更细分的属性来组成,称这样的一个数据项为组合项
  • 数据对象:具有相同性质的数据元素的集合,是数据的一个子集

    • 同一个数据对象里的数据元素,可以组成不同的数据结构
      • 数据对象只是提供了一个数据元素的集合,这些数据元素可以根据不同的逻辑关系组成不同的数据结构
    • 不同的数据元素,可组成相同的数据结构
      • 很好理解,只要数据元素之间的关系相同即可
        • 例如微博好友是网状结构,微信好友也是网状结构,但是二者是不同的数据元素
  • 数据结构:相互之间存在一种或多种特定关系的数据元素的集合

在不同的情况下,每个数据元素当中包含的具体的数据项是千差万别的,但数据元素和数据元素间的结构关系很多时候会呈现出一定的共性,这就是数据结构这门课要研究的内容

计算机考研408真题2011年42题

2.数据结构三要素

2.1逻辑结构

2.1.1 集合结构

  • 集合:各个元素同属一个集合,别无其他关系
计算机考研408真题2011年42题

2.1.2 线性结构:一对一

  • 数据元素之间是一对一的关系
  • 除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继
计算机考研408真题2011年42题

2.1.3 树形结构:一对多

  • 数据元素之间是一对多的关系
计算机考研408真题2011年42题

2.1.4 图状结构:多对多

  • 数据元素之间是多对多的关系
计算机考研408真题2011年42题

2.2数据的运算

  • 针对于某种逻辑结构,结合实际需求,定义基本运算
  • 基本运算:例如对于链表的增删改查

运算的定义是针对逻辑结构的,指出运算的功能;
运算的实现是针对存储结构的,指出运算的具体操作步骤。

2.3物理结构(存储结构)

  • 当我们确定了一种逻辑结构,并且基于这种逻辑结构定义的一些基本运算后,就相当于定义好了一个数据结构,接下来要用计算机来实现这种数据结构,就得考虑到数据结构的第三个要素,也就是物理结构(存储结构)
  • 存储结构探讨的就是如何在计算机内部表示出这些数据元素之间的逻辑关系
计算机考研408真题2011年42题

2.3.1顺序存储(基于线性逻辑结构)

逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

2.3.1链式存储(基于线性逻辑结构)

逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。

2.3.1索引存储(基于线性逻辑结构)

在存储元素信息的同时,还建立附加的索引表

  • 索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)

2.3.1散列存储(基于线性逻辑结构)

根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储

1.若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用
非顺序存储,则各个数据元素在物理上可以是离散的。
2.数据的存储结构会影响存储空间分配的方便程度
3.数据的存储结构会影响对数据运算的速度

3.算法

  • 算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作
  • 程序 = 数据结构 + 算法
    • 数据结构:如何用数据正确地描述现实世界的问题,并存入计算机
    • 算法:如何高效地处理这些数据,以解决实际问题

3.1 算法的五大特性

3.1.1有穷性

  • 一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成
  • 算法必须是有穷的,而程序可以是无穷的

3.1.2确定性

  • 算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出

3.1.3可行性

  • 算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现

3.1.4输入

  • 一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合

3.1.5输出

  • 一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量

3.2“好”算法的特质

  • 正确性:算法应能够正确地解决求解问题
  • 可读性:算法应具有良好的可读性,以帮助人们理解
  • 健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果
  • 高效率与低存储量需求
    • 花的时间少,时间复杂度低
    • 不费内存,空间复杂度低

4.顺序表

先定义一个新的类型:

public class ArrayList<E> {   //泛型E,因为表中要存的具体数据类型待定
    int capacity = 10;   //当前顺序表的容量
  	int size = 0;   //当前已经存放的元素数量
    private Object[] array = new Object[capacity];   //底层存放数据的数组
}

4.1插入操作

当插入元素时,需要将插入位置给腾出来,也就是将后面的所有元素向后移,同样的,如果要删除元素,那么也需要将所有的元素向前移动,顺序表是紧凑的,不能出现空位。

public void add(E element, int index){   //插入方法需要支持在指定下标位置插入
    for (int i = size; i > index; i--)   //从后往前,一个一个搬运元素
        array[i] = array[i - 1];
    array[index] = element;   //腾出位置之后,直接插入元素放到对应位置上
    size++;   //插入完成之后,记得将size自增
}

这样并不完美,因为我们的插入操作并不是在任何位置都支持插入的,我们允许插入的位置只能是 [0, size] 这个范围内,我们需要在插入之前进行判断:

public void add(E element, int index){
    if(index < 0 || index > size)    //插入之前先判断插入位置是否合法
        throw new IndexOutOfBoundsException("插入位置非法,合法的插入位置为:0 ~ "+size);
    for (int i = size; i > index; i--)
        array[i] = array[i - 1];
    array[index] = element;
    size++;
}

我们在插入元素之前,需要进行判断,如果已经装满了,那么我们需要先扩容之后才能继续插入新的元素:文章来源地址https://www.toymoban.com/news/detail-423282.html

public void add(E element, int index){
    if(index < 0 || index > size)
        throw new IndexOutOfBoundsException("插入位置非法,合法的插入位置为:0 ~ "+size);
    if(capacity == size) {
        int newCapacity = capacity + (capacity >> 1);   //扩容规则就按照原本容量的1.5倍来吧
        Object[] newArray = new Object[newCapacity];    //创建一个新的数组来存放更多的元素
        System.arraycopy(array, 0, newArray, 0, size);   //使用arraycopy快速拷贝原数组内容到新的数组
        array = newArray;   //更换为新的数组
      	capacity = newCapacity;   //容量变成扩容之后的
    }
    for (int i = size; i > index; i--)
        array[i] = array[i - 1];
    array[index] = element;
    size++;
}

4.2删除操作

@SuppressWarnings("unchecked")   //屏蔽未经检查警告
public E remove(int index){   //删除对应位置上的元素,注意需要返回被删除的元素
    E e = (E) array[index];   //因为存放的是Object类型,这里需要强制类型转换为E
    for (int i = index; i < size; i++)   //从前往后,挨个往前搬一位
        array[i] = array[i + 1];
    size--;    //删完记得将size--
    return e;
}

到了这里,关于计算机考研408真题2011年42题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机考研】408要怎么复习,才能130+?

    计算机组成原理:理解计算机硬件的工作原理,是理解其他课程的基础。 数据结构:算法的基石,建议作为复习的起点,因为它最像“数学”,一旦掌握,不易遗忘。 操作系统:理解计算机系统资源的管理与调度。 计算机网络:网络通信的基本原理和协议。 王道视频课程:

    2024年04月09日
    浏览(45)
  • 【计算机考研】408算法大题怎么练?

    先说结论:基础阶段学好各个数据结构与,重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段,并不需要过于专门地练习算法。相反,基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中,我发现在这一阶段,建立对数据结构的扎实

    2024年04月10日
    浏览(55)
  • 计算机组成原理(考研408)练习题#3

    用于复习408或计算机组成原理期末考试。如有错误请在评论区指出。 So let\\\'s start studying with questions! それでは、問題の勉強を始めましょう! 1. 定点整数原码编码[x]原=1110100B 的真值为_________。 首先,1110100B是一个8位二进制数,表示的是一个有符号整数的原码。根据原码编码

    2024年02月09日
    浏览(44)
  • 计算机组成原理(考研408)练习题#4

    用于复习408或计算机组成原理期末考试。如有错误请在评论区指出。 So let\\\'s start studying with questions! それでは、問題の勉強を始めましょう! 1. 设某浮点数真值为 0.125,若该浮点数用 IEEE754 标准表示,则该浮点数对应的机器数是什么?(用十六进制表示,不写步骤不得分)

    2024年02月09日
    浏览(53)
  • 【23考研】计算机408数据结构代码题强化阶段划重点(王道书)

    视频链接:【23考研】10分钟带你整理408数据结构强化阶段代码题复习重点 本篇只适合考408的同学,请自主命题的同学自觉右上角×掉 因为王道书为了照顾自主命题的同学,所以很多算法也给出了代码实现,实际上对于考408的同学,很多代码是不需要掌握的,毕竟408的代码题没

    2024年02月15日
    浏览(49)
  • 【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 1 篇:计算机系统概述

    本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。 此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术有限,最终数据清洗结果不够理想,

    2024年02月07日
    浏览(67)
  • 2011 年考研数二真题解析

    【01】【02】【03】【04】【05】【06】【07】【08】 【09】【10】【11】【12】【13】【14】 【15】【16】【17】【18】【19】【20】【21】【22】【23】

    2024年01月18日
    浏览(61)
  • 408计算机复试专业课问答汇总

    桶排序 又要代码精简,又要运行效率提高,分别在 C 语言和 C++语言里面,你如何做优化?对于参加过算法比赛的学生来说这应该不难。在 C 里面比如把递归改成迭代,通过设置判断变量减少不必要的循环次数,在 C++比如用引用传递代替值传递 贪心算法,原理是什么 使用贪

    2024年04月11日
    浏览(64)
  • 硕士研究生入学统一考试408 计算机学科考试大纲

    一、 数据结构 【考查目标】 1. 掌握数据结构的基本概念、基本原理和基本方法。 2. 掌握数据的逻辑结构、存储结构及基本操作的实现, 能够对算法进行基本的时间复杂度 与空间复杂度的分析。 3. 能够运用数据结构基本原理和方法进行问题的分析与求解, 具备采用 C 或

    2023年04月24日
    浏览(108)
  • 计算机保研面试常见问题(408操作系统简答题)

    1. 操作系统的特点和功能是什么? 答:操作系统的特点是并发、共享、虚拟、异步。其中,并发和共享是操作系统主要的特点。操作系统的功能主要包括:处理机管理、存储器管理、设备管理和文件管理等。操作系统管理计算机的全部软、硬件资源,合理组织计算机的工作流

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包