数据结构与算法基础

数据结构与算法基础:

顺序存储结构

链式存储结构

什么是树结构?
为什么使用树结构?
树的基本概念

二叉树: 任何一个节点的子节点数量不超过2
二叉树的子节点分左节点和右节点

满二叉树:所有的叶子节点都在最后一层,而且节点总数为2的n次方-1【n是树的高度】
完全二叉树:所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二节的叶子节点在右边连续

数组
在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
队列
一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。
链表
是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

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

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

在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
散列表
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。

原文地址:https://www.cnblogs.com/qianjinyan/p/10352722.html

时间: 2024-10-09 02:39:45

数据结构与算法基础的相关文章

数据结构与算法基础学习笔记

*********************************************            ---算法与数据机结构--- 数据结构:由于计算机技术的发展,需要处理的对象不再是纯粹的数值,还有像字符,表,图像等具有一定结构的数据,需要用好的算法来处理这些数据. 我们把现实中大量而又复杂的问题以特定的数据类型的特定的存储结构保存到主存储器中,以及在此基础上为实现某个功能而执行的相应操作(查找排序),这个相应的操作也叫算法. 数据结构 = 个体 +个体的关系算法 =对存储数据的操

数据结构与算法基础 模块一

在软件水平考试中,数据结构与算法基础的相关内容是考试上午进行的,那么,接下来将对有关数据结构的内容进行整理和归纳,以便于在整个的软考准备阶段能够更加清楚和有效率的进行学习和回忆. 以下均为个人针对于数据结构的相关内容的整理,后期根据深入的程度不断地完善和改进,如果有什么错误或者不足,希望可以提出来,一起进步. 常用的数据结构:      数组(静态数组,动态数组),线性表,链表(单向链表,双向链表,循环链表),队列,栈,树(平衡数,二叉树,查找树,堆,线索树),图等的定义,存储和操作,HASH(

数据结构与算法基础之概述、指针与内存

数据结构的定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序而执行的相应操作,这个操作也叫算法) 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 衡量算法的标准: 时间复杂度:大概程序要执行的次数,而非执行的时间 空间复杂度:算法执行过程中大概所占用的最大内存 难易程度 健壮性 内存的基本概念: 1.内存是用来存储数据的设备.它的存储速度介于寄存器和硬盘之

数据结构与算法基础 模块六

简单选择排序: 设所排序序列的记录个数为n.i取1,2,-,n-1,从所有n-i+1个记录(R,R[i+1],-,R[n]中找出排序码最小的记录,与第i个记录交换.执行n-1趟 后就完成了记录序列的排序. 代码如下: public  void SimpleSelect() { int[] inputIntArray = new int[8] { 8, 4, 7, 5, 2, 3, 6, 1 }; for (int i = 1; i < inputIntArray.Length; i++) { i

数据结构之算法基础

算法:  大O表示法: 代码(求出数组中出现次数最多的数字): 原文地址:https://www.cnblogs.com/souhaite/p/11030245.html

数据结构与算法基础 模块四

今天主要是有关于图的分享. 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 在图中需要注意的是: (1)线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex). (2)线性表可以没有元素,称为空表:树中可以没有节点,称为空树:但是,在图中不允许没有顶点(有穷非空性). (3)线性表中的各元素是线性关系,树中的各元素是层次关系,而图中各顶点的关

数据结构与算法基础 模块七

二叉树的补充: 线索二叉树: 1.引入线索二叉树 二叉树的遍历实质上是对一个非线性结构实现线性化的过程,使每一个节点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继.但在二叉链表存储结构中,只能找到一个节点的左.右孩子信息,而不能直接得到节点在任一遍历序列中的前驱和后继信息.这些信息只有在遍历的动态过程中才能得到,因此,引入线索二叉树来保存这些从动态过程中得到的信息. 2.建立线索二叉树 为了保存节点在任一序列中的前驱和后继信息,可以考虑在每一个节点中增加两个指针域存放遍历

数据结构和算法基础之单链表

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class Node<T> { public T Data; public Node<T> Next; public Node() { Data = default(T); N

数据结构和算法基础之队列的顺序存储

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { /// <summary> /// 顺序队列 /// </summary> public class OrderQueue<T> { public T[] DataArry; /