程序员有必要学数据结构吗(编程基础必学浅析数据结构)

1.计算机科学的两大支柱:1.数据结构 2.算法

2.数据结构定义: 一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。

程序员有必要学数据结构吗(编程基础必学浅析数据结构)(1)

数据(Data): 是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

  数据元素(Data Element): 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。

  数据结构(Data Structure): 是相互之间存在一种或多种特定关系的数据元素的集合。

3.数据结构主要指逻辑结构和物理结构,数据之间的相互关系称为逻辑结构。通常分为四类基本结构:

  集合: 结构中的数据元素除了同属于一种类型外,别无其它关系。

  线性结构:结构中的数据元素之间存在一对一的关系。

  树型结构:结构中的数据元素之间存在一对多的关系。

图状结构或网状结构 : 结构中的数据元素之间存在多对多的关系。

程序员有必要学数据结构吗(编程基础必学浅析数据结构)(2)

4.数据结构在计算机中有两种不同的表示方法:

  顺序存储结构: 用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

  链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。

5.数据对象:某种数据类型元素的集合。

eg:整数的数据对象是{…-3,-2,-1,0,1,2,3,…}

    英文字符类型的数据对象是{A,B,C,D,E,F,…}

  数据类型:在一种程序设计语言中,变量所具有的数据种类。

6.数据结构的三个方面:

程序员有必要学数据结构吗(编程基础必学浅析数据结构)(3)

7.算法用抽象的语言描述解决特定问题的每一步的操作。程序是计算机能理解和执行的指令序列。一个程序实现一个算法。算法和程序的区别是算法的执行是有穷的,而程序的执行可以是无限的。

8.时间复杂度

9.

  1、什么是集合

    通常情况下,把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合。比如,用Java编程的所有程序员,全体中国人等。

  2、什么是集合框架

    集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

  3、集合框架对我们编程有何助益:

    它减少了程序设计的辛劳、它提高了程序速度和质量。

10. Collection 接口是一组允许重复的对象。

  Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。

  List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。

  Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。

  容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。

11. 递归:

  若一个对象部分地包含它自己, 或用它自己给自己定义, 则称这个对象是递归的;若一个过程直接地或间接地调用自己, 则称这个过程是递归的过程。

程序员有必要学数据结构吗(编程基础必学浅析数据结构)(4)

12. 线性表:

  线性表是由n(n≥0)个相同类型的数据元素a1,a2,…,an组成的有限序列,记作:LinearList={a1,a2,…,an}

其中,n表示线性表的元素个数,称为线性表的长度。

13. 线性表的顺序存储结构:

  是用一组连续的存储单元顺序存放线性表的数据元素,数据元素在内存的物理存储次序与它们在线性表中的逻辑次序是一致的,即数据元素ai与其前驱数据元素ai-1及后继数据元素ai 1的位置相邻。

14.迭代器:

  迭代器是允许以一致的方式对集合对象的元素进行访问的对象。迭代器对象一旦发现另一个对象在结构上修改这一集合,就马上会报错。这是因为一旦你开始对一个ArrayList对象进行迭代,就不能再修改这个ArrayList完整性。所以弹出 ConcurrentModificationException

——————

写在最后:另外,对于准备学习C/C 编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

程序员有必要学数据结构吗(编程基础必学浅析数据结构)(5)

编程学习视频分享:

程序员有必要学数据结构吗(编程基础必学浅析数据结构)(6)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C 感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C 的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页