`
BBLLMYD
  • 浏览: 17947 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常见数据结构

阅读更多

 一、线性结构

 

1.最简单的结构:线性表

     线性表具有以下特征:

   - 有且只有一个"首元素";

   - 有且只有一个"末元素";

   - 除末元素之外,其余元素均有唯一的后继元素;

   - 除首元素之外,其余元素均有唯一的前去元素;

   对于线性表主要可进行以下操作:

   - 添加节点 - 插入节点 - 删除节点  - 查找节点  - 遍历节点  - 统计节点数

 

2.先进先出的结构:队列

      队列是一种特殊的线性表,队列是按照"先进先出"(First In First Out,FIFO)原则处理数据,只允许在表的前端进行删除操作,而在表的后端进行插入操作.进行插入操作的端称为队尾,进行删除的一段称为队头.当队列中没有元素时,称为空队列.

      对队列这种数据结构操作很简单,主要有以下几种:

     -初始化队列: 创建一个队列.

     - 进队列:将一个元素添加到队尾.

     - 出队列:将队头的元素取出,同时删除该元素,使后一个元素成为队头.

     - 获取队列第一个元素:将队头的元素取出,不删除该元素(队头仍然是该元素)

     - 获取队列长度:根据队头,队尾计算出队列中元素的数量.

 

循环队列(一种特殊的队列):


 

 3.先进后出的结构:栈

       栈是一种线性表的特殊表现形式,与队列的"先进先出"不同,栈是按照"后进先出"(Last In First Out,LIFO)的原则处理数据.

       栈的基本操作只有两个:

       - 入栈(Push):即将数据保存到栈顶.进行该操作前,先修改栈顶指针.使其向上移一个元素位置,然后将数据保存到栈顶指针所指向的位置.

      - 出栈(Pop):即将栈顶的数据弹出,然后修改栈顶指针,是其指向栈中的下一个元素.

 

二、树结构

 

树的概念:


 

    二叉树的概念:

      - 在二叉树中,第i层的节点总数最多有2i-1个节点.

      - 深度为k的二叉树最多有2k-1个节点(k>=1),最少有k个节点.

      - 对于一棵二叉树,如果其叶节点数为n0,而度为2的节点总数为n2,则n0=n2+1.

      - 具有n个节点的完全二叉树的深度k为:k=[log2n]+1.

 

      - 有n个节点的完全二叉树各节点如果用顺序方式存储,对任意节点i,有如下关系.

 

如果i!=1,则其父节点的编号为i/2;

如果2*i<=n,则其左子树根节点的编号为2*i;若2*i>n,则无左子树.

如果2*i+1<n,则其右子树根节点编号为2*i+1;若2*i+1>n,则无右子树.

 

    遍历二叉树:

      先序遍历(DLR):称为先根次序遍历,即先访问根节点,再先序遍历左子树,最后先序遍历右子树.

      先序遍历(LDR):称为中根次序遍历,先中序遍历左子树,即访问根节点,最后再中序遍历右子树.

      先序遍历(LRD):称为先根次序遍历,即先后续遍历左子树,再后序遍历右子树,最后访问根节点.

      按层遍历:按二叉树的层进行遍历,可更直观的从图中得出遍历的结果.

 

二叉树的概念:



 



 

线索二叉树:



 

线索二叉树的表示:


 

 

最优二叉树(赫夫曼树):



 

赫夫曼编码:


 

 

 

三、网状关系:图

 

1.图的定义:

无向图and有向图:

 

无向图:



 

有向图:



 

 

2.图的存储:

 

邻接矩阵and邻接表:

邻接矩阵:

邻接表:


 

3.图的遍历

 

       广度优先遍历:

         广度优先遍历类似于树的按层次遍历,具体过程如下:

      ---(1)从isTrav数组中选择一个未被访问的顶点Vi,将其标记为已访问.

      ---(2)接着依次访问Vi的所有未被访问的邻接点,并标记为已被访问过.

      ---(3)从这些邻接点出发进行广度优先遍历,直至图中所有和Vi有路径相通的顶点都被访问过. 

 

      ---(4)重复步骤1至步骤3,直至所有顶点都被访问过.

 

       深度优先遍历:

         深度优先遍历方法类似于树的先序遍历.

      ---(1)从isTrav数组中选择一个未被访问的顶点Vi,将其标记为已访问.

      ---(2)接着从Vi的一个未被访问过的邻接点出发进行深度优先遍历.

      ---(3)重复步骤2,直至图中所有和Vi有路径相同的顶点都被访问过.

      ---(4)重复步骤1-步骤3,直至所有的顶点都被访问过.

 

 

  • 大小: 11.9 KB
  • 大小: 17.6 KB
  • 大小: 3.5 KB
  • 大小: 8.2 KB
  • 大小: 17.5 KB
  • 大小: 15.1 KB
  • 大小: 9.8 KB
  • 大小: 18.9 KB
  • 大小: 20.3 KB
  • 大小: 41.8 KB
  • 大小: 22.4 KB
  • 大小: 9.7 KB
  • 大小: 10.4 KB
  • 大小: 25.9 KB
1
0
分享到:
评论

相关推荐

    Java常见数据结构面试题(带答案)

    "Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的知识点总结: 栈和队列 * 栈和队列的共同特点是只允许在端点处插入和删除元素。 * 栈通常采用的两种存储结构是线性存储结构和链表存储结构...

    常见数据结构.zip

    "常见数据结构.zip" 文件可能包含了一系列关于常用数据结构的资源,如ljg_resource1,这可能是某个教程、代码示例或练习题。 1. **数组**:数组是最基本的数据结构,它是一系列相同类型元素的集合,可以通过索引来...

    常见数据结构与算法C语言实现

    # 常见数据结构与算法C语言实现 内容包含常见基本数据结构实现(C语言版)如各自排序、链表、栈、队列、各种树以及应用、图算法、字符串匹配算法、回溯、并查集等 以及包含各个数据结构常见算法题的解答(C语言版...

    C语言常见数据结构下载

    这个“C语言常见数据结构”下载包含了对这一主题的深入探讨。 数据结构是指在内存中存储和组织数据的方式,常见的数据结构包括数组、链表、栈、队列、树、图等。了解并熟练掌握这些数据结构对于编写高效算法至关...

    知名公司笔试中常见数据结构试题

    这份“知名公司笔试中常见数据结构试题”文档很可能包含了各种类型的数据结构问题,旨在测试应聘者的逻辑思维、算法设计以及问题解决能力。下面,我们将深入探讨这些关键知识点。 1. **数组**:是最基本的数据结构...

    常见数据结构及算法C语言版

    本文将深入探讨在C语言环境中实现常见数据结构和算法的知识点。 首先,我们要了解数据结构是什么。数据结构是指组织和存储数据的方式,它使得数据的操作更有效率。常见的数据结构有数组、链表、栈、队列、树、图、...

    常见数据结构与算法题目

    在这个“常见数据结构与算法题目”的压缩包中,我们可以预期找到与LeetCode相关的算法练习。 首先,我们要理解数据结构。数据结构是组织和存储数据的方式,它决定了数据的访问和操作效率。常见的数据结构有数组、...

    常见数据结构与算法笔试面试题大集合

    这份“常见数据结构与算法笔试面试题大集合”涵盖了这一领域的核心概念,旨在帮助求职者更好地准备相关考试和面试。 1. **数组**:数组是最基础的数据结构,它提供了一种在内存中存储和访问固定数量元素的方式。...

    R Markdown文件示例,内容涵盖了R语言中的常见数据结构

    我们详细介绍了R语言中的几种常见数据结构,并通过代码示例展示了每种数据结构的用法。 向量(Vector):向量是R中的基本数据结构,所有元素必须是同一种类型。我们展示了如何创建数值型、字符型和逻辑型向量,以及...

    常见数据结构及算法(Java语言描述).zip

    本资源"常见数据结构及算法(Java语言描述).zip"显然是一个关于这个主题的资料包,包含了可能的Java代码实现和相关讲解。 首先,我们来详细了解一下数据结构。数据结构是组织、存储和处理数据的方式。常见的数据...

    常见数据结构和算法的多语言实现。.zip

    这个压缩包“常见数据结构和算法的多语言实现”包含了一系列数据结构和算法的实现,可能是用多种编程语言编写的,比如Python、Java、C++等。这些实现可以帮助开发者深入理解各种数据结构的工作原理,提高编程能力,...

    阿迪王(一切皆可改变)! Rust实现的常见数据结构,然而也许有Bug。.zip

    .zip"这个压缩包可能包含了用Rust编写的常见数据结构的代码示例,同时也提示可能存在一些潜在的错误或不完善之处。 在C、C++、Java和Python这四种广泛使用的编程语言中,数据结构的学习是基础且至关重要的。C和C++...

    常见数据结构(java+c代码)

    本资源"常见数据结构(java+c代码)"提供了使用Java和C语言实现的数据结构示例,这对于学习和理解这些概念至关重要。 在Java和C这两种语言中,数据结构通常包括以下几种: 1. **数组**:是最基础的数据结构,允许...

    常见数据结构的 Python 代码例程

    常见数据结构的 Python 代码例程

    图解!24张图彻底弄懂九大常见数据结构!,数据结构详解

    图解!24张图彻底弄懂九大常见数据结构!,数据结构详解

    Java常见数据结构实现

    Java常见数据结构实现,队列,二叉树等等

    Delphi 中常见数据结构简介 word文档

    Delphi 中常见数据结构简介 word文档

    基于C语言的常见数据结构设计源码分享

    该项目提供了一系列基于C语言的常见数据结构设计源码,共计21个文件,包括8个C源代码文件、8个头文件和4个Markdown文档,旨在帮助开发者更好地理解和实现C语言中的数据结构。

    八种常见数据结构汇总+图解+代码实现.pdf

    八种常见数据结构汇总+图解+代码实现.pdf

Global site tag (gtag.js) - Google Analytics