数据结构笔记一:基本概念和分类

来源:互联网 发布:esxi mac os 编辑:程序博客网 时间:2024/06/01 07:34

 前段时间找工作,发现数据结构是每个公司必问的一块,由于是非计算机专业的,这门课一点没学过,只能临时抱佛脚了,这两天闲下来,决定把之前看的整理一下。


数据结构:相互之间存在这一种多种关系的数据元素的集合。

数据元素:表示一个事物的一组数据。

数据项:构成数据元素的数据称为该数据元素的数据项。

                 如要设计一个学生类,学生的姓名、年龄、学号等就是学生情况描述的数据项,包括这一组数据想的的一组数据就是数据元素。

数据的操作:对一种类型的数据进行的某种方法的处理。

数据的操作集合:一直类型的数据所有的操作集合。

类型:一组值得集合。

数据类型:某个类型和定义在这个类型上的操作集合。

抽象数据类型:只一个逻辑概念上的类型和这个类型上的操作集合。

                              如数据结构中的栈、表、堆、串、队列、树、图等都是一个个抽象数据类型。

数据类型和抽象数据类型的区别:

定义基本相同,只是数据类型值得是高级程序语言支持的基本数据类型,抽象数据类型指的是在基本数据类型支持下用户新计的数据类型。

逻辑结构:数据之间的相互关系被称为数据的逻辑结构,根据数据元素前后之间的关系复杂程度,可以将其分为线性结构和非线性结构。

线性结构:数据元素之间存在一个对一个的前后次序关系

         特点:有且只有一个根节点

                      每个节点最多有一个前驱,也最多只有一个后继。进行各种数据运算后仍然得满足这两点,有其中一点不满足,则不是线性结构。

 

非线性结构:一个数据结构如果不是线性的就是非线性结构。

          特点: 数据元素前后关系复杂,一个节点既可以有多个前驱,也可以由多个后继,如集合、树、图

数据的运算:插入、删除、查找、排序等

数据的运算是定义在逻辑结构上的,运算的具体实现是定义在存储结构上的

集合:元素间为松散的关系(数据元素间的关系是属于同一集合)

线性表:是一个线性结构,它是一个含有n≥0个相同类型的数据元素组成的线性结构,空线性表用()表示,有n个数据元素的线性表用(a0,a1….an-1)表示。特点:

                有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。

感觉和线性结构是一个意思,查了很多资料,最后的理解是:

他既然属于线性结构,则肯定满足线性结构的特点,线性表可以用顺序或链式存储结构实现,用顺序结构实现的线性表就是顺序表(一维数组是,多维数组不是),顺序表类实现list接口,arraylist就是顺序线性表,用链式结构实现的线性表就是链表,linkedlist就是链式线性表。顺序结构和链式结构的优缺点刚好相反。

线性表(链表):可在任意位置插入或删除元素,

队列:是特殊的线性表,在队尾插入元素,队头删除元素, 先进先出(跟排队一个道理,先来的先受到服务)

栈  :也是特殊的线性表,只能在栈顶进行插入,删除操作. 先进后出(一群人走进了死胡同, 然后再都出来)

 

串  :也是特殊的线性表,即字符串,串名 = “串值(任意Unicode码字符)”,双引号不属于串,只是为了避免与其他符号混淆。单个元素无意义,数据元素以及元素之间的逻辑关系与线性表完全相同,差别:

u 线性表的数据元素可以是任意数据类型,串的数据元素只能是字符型;

u 线性表一次操作一个元素,串一次操作若干个元素,如果每次操作的子串长度为1,则串就是数据类型固定为字符型的线性表。

数组:不能进行插入和删除,占用一块地址连续的内存单元。网上有说数组是一个数据类型,不是数据结构,后来查了书后,数组是最基础的数据结构,所有线性结构的顺序存储结构实际就是使用数组存储。

但数组和顺序表的感觉好像啊!具体解释:一维数组本身就是顺序表,多维的是特殊的线性结构。

数组与线性表相同之处:

他们都是若干个相同数据类型的数据元素构成的有限序列。

不同之处:

l  数组要求其元素占用一块地址连续的内存单元空间,线性表无此要求。

l  数组中每个元素还可以是一个数组(二维数组就可以看出每个元素是一个一维数组),线性表从逻辑上来说是不可分的的元素。

l  数组的主要操作是向某个下标的数组元素中存入数据和取出某个下标的数组元素,这和线性表的插入和删除操作不同。

 

面试题:数据结构中常见的线性结构有哪些,他们之间有什么区别?

常用的线性结构有:线性表,栈,队列,数组,串。线性表是多个相同元素组成的有限线性序列。栈是一种特殊线性表,它将插入和删除限制在表的一端进行,是一种后进先出表。队列也是一种操作受限的特殊线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。顺序存储结构在计算机内用一组连续的内存单元来存储数组。一维数组本身就是顺序表结构,多维数组是一种特殊的线性结构。串是一种数据元素固定为字符的线性表。串上的操作是针对串的整体或串的某一部分子串进行的,而线性表是针对线性表上的某个数据元素进行的。


0 0