数据结构学习笔记

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

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

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

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

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

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

                 集合:是数据元素之间的关系是  同属于一个集合
                 线性结构:  除了第一个和最后一个元素 ,其他每个元素都只有一个 直接前驱和一个直接后继。
                 树形结构: 每个元素若有之前 前驱,只能有一个。但可以有多个后继元素。
                  图形结构: 每个元素可以有多个直接前驱,和多个直接后继。


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

                   索引方式,散列方式 是一种什么形式 ?
                 顺序方式:    元素按照某种顺序存放到一片 连续的存储单元。元素之间的逻辑关系是通过他们存储位置来体现。
                                     
                                      优势:
                                       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),按这个思想建立的表为散列表。






编程过程中如何选择 数据结构?

   内存中的堆和栈?? 不对啊 堆是一种数据结构,栈是一种数据结构 ,平时说是 存放在堆中 ,栈中其实是 存储的结果区域。?






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

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

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

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

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

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

                 集合:是数据元素之间的关系是  同属于一个集合
                 线性结构:  除了第一个和最后一个元素 ,其他每个元素都只有一个 直接前驱和一个直接后继。
                 树形结构: 每个元素若有之前 前驱,只能有一个。但可以有多个后继元素。
                  图形结构: 每个元素可以有多个直接前驱,和多个直接后继。


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

                   索引方式,散列方式 是一种什么形式 ?
                 顺序方式:    元素按照某种顺序存放到一片 连续的存储单元。元素之间的逻辑关系是通过他们存储位置来体现。
                                     
                                      优势:
                                       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),按这个思想建立的表为散列表。






编程过程中如何选择 数据结构?

   内存中的堆和栈?? 不对啊 堆是一种数据结构,栈是一种数据结构 ,平时说是 存放在堆中 ,栈中其实是 存储的结果区域。?
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值