[数据结构与算法] 1,一些基本的定义

来源:互联网 发布:node命令行输入读取 编辑:程序博客网 时间:2024/05/22 00:40

1 做编程,必须学好数据结构与算法


数据结构与算法是计算机相关专业的基础课程,几乎可以说,想要从事编成工作,就必须好好深入学习数据结构以及算法思想。

2 数据

数据:是描述客观事物的符号,是计算机中的可操作对象,被计算机识别并且输入给计算机处理的符号集合。数据包括数值类型的数据,还包括字符,声音,图片,视频等非数值的数据类型。

3数据元素

数据元素:数据元素是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。比如人是人类这个数据类型的一个元素。

4数据项

数据项:一个数据元素可以由多个数据项组成,是数据不可分割的最小单位。比如耳朵,鼻子,手脚都是组成人的一个数据项。

5数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。

性质相同可以理解为数据项相同或者数据项的数量相同,比如相同姓名的人,相同年龄的人,相同性别的人。其实也可以简单理解为数据。


6 数据类型:一组性质相同的值的集合以及定义在该集合上的一些操作的总称。
    在C语言中,数据类型可以分为两类:
        原子类型:不可以在分解的基本类型,比如整形,字符型,浮点型等等。(int a 说明a不能超出int的取值范围,并且只能做int所允许的运算。)
        结构类型:若干个类型组合而成的,是可以再分解的,例如整形数组是由若干个整形数据组合而成的。
整形数据元素在进行运算的时候,只能用其规定的运算操作,比如加减乘除。我们可以把这些操作抽象出来,因为高级语言并不关心这些操作在不同计算机系统下过程是如何实现的。
抽象:抽取事物具有的普遍性的本质,抽出问题的特征,忽略非本质的细节。是对具体事物的一种概括,是一种思考问题的方式。隐藏了繁杂的细节,只保留实现目标的必要信息。


7 抽象数据类型:abtract data type(ADT),是指一个数学模型以及这个模型上的一组操作。它的定义只取决于他的逻辑特征,而与计算机内部如何表示和实现无关。(忽略存储结构,只关注逻辑结构)
比如说超级玛丽是一个数据对象,跳跟跑是他的操作。

抽象数据类型体现了程序设计之中的问题分解,抽象以及信息隐藏。



8数据结构

数据结构:相互之间存在一种或者多种特定关系的数据元素的集合。比如说一个分子里面原子的排列结构。类型用来说明变量或者表达式的取值范围和所能做的操作。


按照视点不同,我们把数据结构分为逻辑结构以及物理结构

逻辑结构:数据对象中,数据元素之间的相互关系。


    逻辑结构分为四类:
    1,集合结构:集合结构中,数据元素属于同一个集合,除此之外,数据元素之间并没有其他关系,各个数据元素是平等的。


    2,线形结构:线形结构中,数据元素之间是一对一的关系。


    3,树形结构:树形结构中,数据元素之间的关系存在一种一对多的层级关系。


    4,图形结构:图形结构中,数据元素之间的关系是多对多的关系。


注明:将每个元素看成一个节点,元素之间的逻辑关系用节点之间的连线表示,如果这个关系是有方向的,那么用带有箭头的连线表示。




物理结构:也叫作存储结构,是数据按照逻辑结构在计算机中的存储形式。
    数据时数据元素的集合,那么物理结构也就是把数据元素存储到存储器中,存储器主要针对内存而言,像软盘硬盘光盘这样的外设存储器的数据组织通常用文件结构来描述。
    数据的物理结构有顺序存储链式存储
    1,顺序存储:把数据元素存放在地址连续的存储单元里,数据间的逻辑结构跟物理结构一致。比如说数组。


    2,链式存储:把数据元素存放在地址任意的存储单元里,这组存储单元可以不连续,也可以连续。


        数据元素的存储结构并不能反映其逻辑结构,因此需要用一个指针存放数据元素的地址,再通过这个地址就可以找到相关联的数据元素。


9 Java中的抽象数据类型

Java collection framework,在java中,常常给出一个接口来给出一个操作集合,不需要透露这些操作的实现细节,接口里面定义了一系列的方法集。

线形表,堆栈和队列

线形表:是一个有限个元素的集合,其元素以线性的方式排列并提供对元素的直接访问。

堆栈:后进先出的有序线形表,元素从堆栈的头加入,并从堆栈的头取出。

队列:先进先出的有序线性表,元素从队尾加入,从队头取出。

线形表,堆栈和队列有很多种实现方式,例如我们可以用有序数组或者一个链表来实现,但是关键的一点是无论我们怎么实现,对外的接口都是不变的。

Collection接口用来表示任意成组的对象,也就是元素。提供了增删查改的操作,另外还提供了一个iterator方法。AbstactCollection类提供了对Collection类除了Iterator和size外的所有实现

List接口继承了Collection接口并定义了一些允许相同元素存在的有序集合。它有两个主要实现,LinkedList和ArrayList。ArrayList提供了数组风格的操作并支持数组大小的改变操作。LinkedList提供了在列表开头和结尾添加删除的操作。使得我们可以简单把LikedList当作堆栈或者队列来使用。

1 0
原创粉丝点击