码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构基础理解

时间:2017-11-12 18:38:52      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:集合   程序   完全二叉树   image   stack   保存   满二叉树   描述   ima   

 

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

算法与数据结构的区别:

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个结点的二叉树,每层都充满了结点:

技术分享

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

技术分享

 

数据结构基础理解

标签:集合   程序   完全二叉树   image   stack   保存   满二叉树   描述   ima   

原文地址:http://www.cnblogs.com/kellerfz/p/7822348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!