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

在软件水平考试中,数据结构与算法基础的相关内容是考试上午进行的,那么,接下来将对有关数据结构的内容进行整理和归纳,以便于在整个的软考准备阶段能够更加清楚和有效率的进行学习和回忆。

以下均为个人针对于数据结构的相关内容的整理,后期根据深入的程度不断地完善和改进,如果有什么错误或者不足,希望可以提出来,一起进步。

常用的数据结构:

     数组(静态数组,动态数组),线性表,链表(单向链表,双向链表,循环链表),队列,栈,树(平衡数,二叉树,查找树,堆,线索树),图等的定义,存储和操作,HASH(存储地址计算,冲突处理)

常用的算法:

  • 排序,查找,数值计算方法,字符串处理方法,初级压缩算法,递归,图的相关计算
  • 算法与数据结构的关系,算法效率,算法设计,算法描述(流程图,伪代码,决策表),算法的复

那么,我们在明确基本的数据结构和常用算法之后,就得知道在整个的软考中级数据库中,这部分的分值其实所占比例不是很大,而且对于代码掌握的要求也不是很高,但是必须在整个的学习当中,我们还是必须要明白他们之间的关系,这样才有利于我们在后期的学习和考试中,有一个夯实的基础。

我们来看一下,在本阶段中的考点:

1.线性表

2.二叉树

3.图

4.排序算法

5.Hash (散列算法)

6.查找算法

我们在主要的学习当中需要着重注意以上的几点,但在这六种考点中,最需要注意1.线性表,5.Hash和6.查找算法的使用与掌握。那么,在明确相关的考点和需要注意的问题之后,我们来看一下有关数据结构的内容。

数据结构可以分为两大类:

按逻辑分类:

1. 集合(无逻辑关系)

2. 线性结构(线性表):① 一维数组 ②队列 ③栈

3.非线性结构:①树 ②图 ③多维数组

按存储结构分类:

1.顺序存储结构

2. 链式存储结构

3.索引存储结构

4.散列存储结构

接下来将根据以上进行归类学习:

一、线性表  (顺序表,链表)

1.顺序表(连续不间断)

2.链表(离散单独的):又分为 单链表,循环链表,双链表。

单链表(只单一方向的移动,没有后继节点,最后一个指针域为NULL)

循环链表(与单链表相似,但有后继节点,指针域不为空且结点指向头节点)

双链表(可以朝两个方向的移动,有两个指针域):双链表灵活度和开支都大于单链表

那么明确链表的基础知识后,需要明白相关链表的操作:

1.单链表结点的删除 :

2.单链表结点的插入

3.双链表结点的删除

4.双链表结点的插入

注: 在单链表和双链表结点做删除处理的时候,其操作方法一样,均为前一结点的指针域直接指向被删结点的后继/但是在做插入操作的时候,需要注意并不是前驱结点的指针域直接指向后继节点就行,二者的方法有些不同。

已经把顺序表和链表进行了简单说明,那么两者间的优劣又是如何,接下来就要将顺序表和链表进行比较

性能类别 具体项目 顺序存储 链式存储
空间性能 存储密度 =1  更优 <1  
容量分配 事先确定 动态改变   更优
时间性能 查找运算 O(n\2) O(n\2)
读运算 O(1)  更优 O(【n+1】)/2)  最好情况为1  最坏情况为n
插入运算
O(n/2)最好情况为0  最坏情况为n

O(1)   更优
删除运算 P(【n-1】/2) O(1)   更优

这个表可以明显的看出两者在空间性能和时间性能上面的区别,各有各的优点,各也由各的缺点。

原文地址:https://www.cnblogs.com/bibabo/p/9326723.html

时间: 2024-07-31 00:57:49

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

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

简单选择排序: 设所排序序列的记录个数为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

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

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

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

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

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

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

数据结构与算法基础

数据结构与算法基础: 顺序存储结构 链式存储结构 什么是树结构?为什么使用树结构?树的基本概念 二叉树: 任何一个节点的子节点数量不超过2 二叉树的子节点分左节点和右节点 满二叉树:所有的叶子节点都在最后一层,而且节点总数为2的n次方-1[n是树的高度]完全二叉树:所有叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二节的叶子节点在右边连续 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言

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

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

数据结构之算法基础

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

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

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; /