简单来说 数据结构有哪些? 存储方式上:链表形式,数组,

 

 研究数据结构从三个方向进行 :
   逻辑结构
   存储结构
   操作

简单来说 数据结构有哪些? 存储方式上:链表形式,数组,

 

数据结构分别为逻辑结构、存储结构(物理结构)


逻辑结构又分为四类基本结构:

 

  集合、线性结构、树形结构、图状结构(网状结构)

 

             集合、线性结构??这两项有何区别?? 

 

                 集合:是数据元素之间的关系是  同属于一个集合

                 线性结构:  除了第一个和最后一个元素 ,其他每个元素都只有一个 直接前驱和一个直接后继。

                 树形结构: 每个元素若有之前 前驱,只能有一个。但可以有多个后继元素。

                  图形结构: 每个元素可以有多个直接前驱,和多个直接后继。

 


存储结构(物理结构)又分为  顺序存储结构  和  链式存储结构,索引方式,散列。

         

 

                   索引方式,散列方式 是一种什么形式 ?

                 顺序方式:    元素按照某种顺序存放到一片 连续的存储单元。元素之间的逻辑关系是通过他们存储位置来体现。

                                     

                                      优势:

                                       1  元素直接的逻辑关系是通过他们存储位置体现,因此存储密度高。

                                        2 可以快速确定元素的存储位置,从而能够实现对元素的随机,快速访问。

                                      缺点:

                                     1   插入删除操作,可能会引起大量元素的移动,实现效率低。

                                       2  存储空间需要预先支配,如果定的太大会造成空间浪费

 

                  链式存储: 逻辑上相邻的元素,物理位置上未必相邻,元素之间的逻辑关系由附加的指针域表示。

                             

                                      优势:

                                             1  元素直接的关系通过指针域表示,因此插入 删除不会引起大量元素的移动。效率高。

                                              2  可动态的申请 和 释放节点空间,所使用的存储空间大小 与实际存储的数据元素 保存 一致。

    

                索引方式:  在存储数据元素的同时 再建立一个索引 表,索引表中的每一行 称为 索引 项 ,一般情况是 (关键字,地址)

 

                                    关键字:能够唯一标识一个数据元素 的一个或多个 数据项。

                            

                                      优势: 检索速度快

                                       缺点: 

                                                 1  增加索引表会占用存储空间 

                                                  2 在插入或者删除数据元素是需要修改 索引表,因而会话费时间。

 

                  散列方式:   数据元素的存储地址 是用他的关键字 计算出来的,散列方式又称为哈希表,凑杂表 

                                         优点: 检索,插入 ,删除操作很快。

                                         缺点: 如果使用了不好的 散列函数 ,可能会出现 存储单元冲突,为了解决冲突需要额外的时间和空间 开销。

 

数据运算:

常用的数据运算  有   插入 查找 删除  排序 更新。

什么是算法????:  是对解决问题方法的 精确描述 ,用来完成 某个特定任务的有限步骤序列 。

 

 算法的基本特征:

 

   1:   有穷性,一个算法必须在执行 有穷步之后将结束,而且每一步都必须在又穷时间内结束。

   2: 确定性,算法中每一个指令 必须有确切的含义,且无二义性。

   3: 可行性, 算法中描述的所有操作都可以让已实现的 基本运算执行 有限次 完成,

    4: 输入

  5 : 输出 

 

算法的评价 :

 

          1  算法的时间复制度:  根据算法 编写出来的程序 在计算机上运行时 所消耗的时间  。

           2 算法的空间复制度:  根据算法 编写出来的程序在 计算机上运行时 所需要的 存储空间 的大小。

 

 


数据结构中,逻辑上(逻辑结构:数据元素之间的逻辑关系)可以把数据结构分成线性结构和非线性结构

 

 

数组 (Array): 由一组 相同的数据 元素 构成的有限集合。 各元素之间  有顺序 关系。 

 在程序设计中,为了处理方便,
 把具有相同类型的若干变量按有序的形式组织起来。
这些按序排列的同类数据元素的集合称为数组。
在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。
因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
 
栈 (Stack):  只能在一端 插入和删除的 线性 表。 后进先出 last in first out   =lifo
  是只能在某一端插入和删除的 特殊  线性表。它按照 后进先出  的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,
需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
 
队列 (Queue):  只能在一端 插入 和另一端 删除 的 线性表 。先进先出的原则  first in first out =fifo
  一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列中没有元素时,称为空队列。
 
链表 (Linked List):
  是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
 
树 (Tree)

  是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:
  (1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。
 (2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。
  (3)K中各结点,对关系N来说可以有m个后继(m>=0)。
 
图 (Graph):

  图是由结点的有穷集合V和边的集合E组成。
 
其中,为了与树形结构加以区别,在图结构中常常将结点称为    顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
 
堆 (Heap):  

  在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。  ??
 
散列表 (Hash):

  若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
 
编程过程中如何选择 数据结构?
  
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值