数据结构基础理解

Posted *平凡*随风舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构基础理解相关的知识,希望对你有一定的参考价值。

 

数据结构只是静态的描述数据元素之间的关系,高效的程序需要在数据结构的基础上设计和选择算法。

算法与数据结构的区别:

1,算法是为了解决实际问题而设计

2,数据结构是算法需要处理的问题载体。

3,数据结构与算法相辅相成

算法具体五个基本特性:输入,输出,有穷性,确定性和可行性

数据结构分类,按照视点不同,通常分为逻辑结构,和物理结构

逻辑结构:

1,集合结构,类似于数学中的集合,各个数据元素是平等,或者没有其它关系

 

2,线性结构,元素之间是一对一的关系,

 

3,树形结构,是元素之间存在一对多的层次关系

 

4,图形结构,元素关系是多对多

 

物理结构:

1,顺序存储,把数据元素存放在连续的地址存储单元

 

2,链式存储,是把元素存在任意的存储单元,这些单元可以是连续的,也可以是不连续的,需要用一个指针存放元素地址,通过地址找到相关数据的位置。

 

线性表与受限线性表

线性表

特点是节点之间满足线性关系,如动态数组,链表,栈,队列都属于线性结构,数据元素之间是有顺序的,数据元素个数是有限的,数据元素的类型必须相同

1,线性表的顺序存储

优点:无需为线性表中的逻辑关系增加额外空间,可以快速的获取表中合法位置的元素。

缺点:插入和删除操作需要移动大量元素。

2,线性表的链式存储

优点:无需一次性定制链表的容量,插入和删除数据无需移动数据元素。

缺点:数据元素必须保存后继元素的位置信息,获取指定数据的元素操作需要顺序访问之间的元素。

受限线性表

1,栈(stack),是一种特殊线性表,在于限制了这个线性表的插入和删除位置,它始终在栈顶进行,栈底是固定的,最先进栈的只能在栈底。

 

2,队列(Queue),只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

 

树和二叉树

由一个或多个(n>=0)结点组成的有限集合T,有且仅有一个结点称为根(root),当n>1时,其余的结点分为m(m>=0)个互不相交的有限集合T1,T2....Tm,每个集合本身又是棵树,被称为根的子树。

 

树的特点:

1,非线性结构,有一个直接前驱,但可能有多个直接后继

2,树的定义具有递归性,树中还有树。

3,树可以为空,即节点个数为0.

二叉树基本概念:

逻辑结构是一对二(1:2),每个结点最多只有两棵子树(不存在大于2的结点),左子树和右子树次序不能颠倒(有序树)。

满二叉树,即一棵深度为K 且有2k - 1个结点的二叉树,每层都充满了结点:

完全二叉树,即每一层上的节点树均达到最大值,在最后一层上只缺少右边的若干结点。

 

以上是关于数据结构基础理解的主要内容,如果未能解决你的问题,请参考以下文章

深入理解pythonpython基础知识之数据结构

Java基础系列1:深入理解Java数据类型

Datawhale 零基础入门数据挖掘-Task1 赛题理解

MySQL数据库的基础操作及理解

分分钟理解大数据基础之Spark

JAVA零基础小白学习免费教程day13-Collection&数据结构