![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
待整理 # 数据结构
作为草稿箱
herui7322
这个作者很懒,什么都没留下…
展开
-
一元多项式的相加
一元多项式:可以用一个线性表P来表示:Pn(x)线性表表示法每一项的指数从系数下标即可表示1.采用顺序存储结构来存系数,对应单元的内容相加即可。但在通常的应用中,多项式的指数有时可能会变化很高并且变化很大,如下图用一长度为20001的线性表来表示,表中仅有3个非零元素,浪费空间。所以我们可以存储非零系数项和相应的指数。假设一元多项式:线性表表示:只存非零系数,多项式中每...原创 2019-12-19 01:12:58 · 3552 阅读 · 0 评论 -
链表——循环链表、双向链表
全为笔记,复习完整本书再做修改。循环链表1.循环链表结构设计循环链表要解决的问题:不从头结点出发,也能访问所有结点,求补充。循环链表是表中最后一个结点的指针指向头结点,使链表构成环状。2.循环链表的运算运算与单链表基本一致,主要有以下不同:1)在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是像单链表那样置为NULL。2)在判断是否到表尾时,则判断该结点链域的值...原创 2019-12-18 00:12:30 · 217 阅读 · 0 评论 -
链表基本操作01
头结点有无有什么区别呢?在表示空表时:有头结点直接head->next=null即可;没有头结点头指针指向为空。在操作时需要判断是否在开始结点,那么在插入、删除等操作同样要判断当前位置。所以加入头结点后,发现无需对开始结点特殊处理。1.链表结构描述:List item存数据存联系:data存储数据,next指向下一个节点。那么这种结构有什么优点呢?它的特点是(存储地址...原创 2019-12-04 01:23:56 · 565 阅读 · 0 评论 -
顺序表
线性表中的元素依次存放在一个连续的存储空间中线性表结点之间具有线性、先后、一维关系顺序表存储结构的设计定义:总之:顺序表逻辑上相邻对应物理地址相邻,通过数组存储数值就可以了。我们需要定义一个整型变量表示存储到那个位置了即可。备用空间是因为我们不知道要存储的数值个数,定义一个尽可能大的数。结构体定义:typedef int ElemType; //假定线性表元素...原创 2019-11-26 15:19:50 · 293 阅读 · 0 评论 -
数据结构——链和队列04
杨辉三角的链队列解法遇到个问题,结果不能输出;检查代码似乎没错,不会debug,简单调试对变量添加查看,用的编译器是DEV C++;之前还遇到个问题,if else语句中,即使只有一句语句,仍然需要加“{}”,否则报错,大致是else没有if 与之匹配。#include<stdio.h>#include"Unit3_8.cpp"#define N 15int mai...原创 2020-01-28 16:02:00 · 290 阅读 · 0 评论 -
数据结构——栈和队列03
顺序队列的基本操作前面介绍用两个指针表示队列状态,为区别队空与队满状态,让front指针向前移动一个位置。顺序结构定义:typedef strct{ datatype data[QUEUE_SIZE]; int front, rear;}SeqQueue;1.置空栈按队空初始化条件 front = rear =QUEUE_SIZE-1 设置头尾指针。程序实现:/*=====...原创 2020-01-25 22:55:00 · 291 阅读 · 0 评论 -
数据结构——栈和队列 02(杨辉三角队列解法)
队列处理模式:整个数据处理过程模型即是一个队列的形式。杨辉三角的队列解法,编程输出几行杨辉三角形;【】杨辉三角是由二项式(a+b)的 n 次方(n=1,2,3…)展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。算法描述:在每行之间插入一个0作为行的分隔标记,形成的系数序列存在数组queue[]中。设 front 指向要求和的...原创 2020-01-25 14:36:38 · 2888 阅读 · 0 评论 -
数据结构——栈和队列 01
顺序栈存在栈满以后就不能再进栈的问题,这是因为用了定长的数组存储栈的元素。解决的方法,可以使用链式存储结构,让栈空间可以动态扩充。2.链栈的基本操作关于链表和链栈:都是采用离散的方式存储,存储元素分别为线性表元素和栈元素。...原创 2020-01-23 21:30:28 · 233 阅读 · 0 评论 -
多维数组与字符串02
字符串的查找——模式匹配模式匹配(Pattern Matching):子串(模式串)在主串(目标串)中的定位运算。1.BF 算法原创 2020-02-02 16:52:43 · 384 阅读 · 0 评论 -
内容特殊的线性表——多维数组与字符串01
数据结构如线性表、栈和队列等,均是线性结构,其中的数据元素是非结构的原子类型。本章要讨论的数组,可以看成是线性表的扩展,即表中的元素本身也是一种数据结构。本章简单讨论数组的逻辑结构及其存储方式。1.多维数组从数据结构的角度看,数组是 n(n>=0)个相同数据类型数据元素构成的有限序列,数组可以看成是一种特殊的线性表,是线性表的推广。数组的概念【数组定义】数组(Array)是由类型...原创 2020-01-30 20:55:40 · 1353 阅读 · 0 评论 -
分层次的非线性结构——树(广义表)05
包含子结构的线性结构,线性表的推广——广义表广义表的定义广义表定义约定:为了区分原子和子表,书写时用大写字母表示子表,用小写字母表示原子。广义表特性广义表表示方法用圆圈和方框分别表示表和单元素,并用线段把表和它的元素(元素结点应在其表结点的下方)连接起来。树根结点代表整个广义表,各层树枝结点代表相应的子表,树叶结点代表单元素或空表。广义表与其他数据结构的...原创 2020-02-14 16:51:48 · 4426 阅读 · 0 评论 -
分层次的非线性结构——树05
线索二叉树二叉链表线索化的实现【方案一】增加前趋后继指针域可以增加二叉链表结点中的指针域来存放前趋和后继结点信息,其中Lthread表示前趋结点的地址,Rthread表示后继结点的地址。对树的先序遍历而言,结点的孩子与后继的关系是:任一结点的后继是其左孩子;若左孩子为空,则为右孩子;若右孩子也为空,则为后继。考虑到先序遍历中,结点的孩子与后继是一样的,因此只用一个孩子结点的指针域即可...原创 2020-02-13 19:11:02 · 270 阅读 · 0 评论 -
分层次的非线性结构——树(查找问题)04
树的遍历广度优先遍历(Breadth-First Search)1.基于顺序存储结构的树的广度优先遍历2.基于链式存储结构的二叉树广度优先遍历从根结点开始访问,然后以这个结点为线索,顺序访问与之直接相连的结点(孩子)序列,以此序列为线索,重复操作,直至所有结点访问完毕。算法描述:(1)初始化一个队列,并把根结点入列队;(2)队列元素出队,取得一个结点,访问该结点;(3)若该结...原创 2020-02-09 21:17:33 · 187 阅读 · 0 评论 -
分层次的非线性结构——树 03
二叉树的存储结构及实现1.二叉树的顺序结构用一组连续的内存单元,按编号顺序依次存储完全二叉树的结点。1)结点间关系分析:因为已知一个结点的编号,那么其相关的编号都能推算出来,因此,只存储结点编号即可;2)结点位置分析:因为结点编号的连续性,因此可以用它做存储向量的下标。由于C语言规定数组下标必须从 0 开始,不用此单元,而让根结点存储在下标为 1 的位置,这样树的编号与下标位置就一一对应起...原创 2020-02-07 20:42:55 · 779 阅读 · 0 评论 -
分层次的非线性结构——树(二叉树的逻辑结构)02
二叉树的逻辑结构二叉树在采用链式存储方式时是一种存储效率较高的结构,也是一种最简单的树的形式,因此重点讨论二叉树的特性、存储及运算。问题:如何实现树与二叉树的转换?1. 树转换为二叉树转换过程:加线:在所有相邻兄弟结点之间加一条连线。去线:对每个非终端结点,除了其最左孩子以外,删去该结点与其他孩子结点的连线。旋转:以根结点为轴心,向右旋转 45°。调整:整理成二叉树。树转换为...原创 2020-02-04 18:49:13 · 802 阅读 · 0 评论 -
分层次的非线性结构——树01
树的示意图树的图形表示方法树的存储结构:树形结构的存储,依然遵循存储的两大原则:“存数值、存联系” 和 “存得进,取得出”。由于树是非线性结构,结点间联系的存储,要比线性关系复杂得多,因此它成为存储树形结构问题的关键与重点。1)树的连续存储方式树连续存储1——双亲孩子表示法按照 “存数值,存联系” 的原则,用数组存储树中结点值,对应有下标,即结点的编号,则每个结点...原创 2020-02-03 21:45:03 · 919 阅读 · 0 评论 -
活动顶点与活动边的问题07
图的活动顶点排序问题的引入一般的复杂工程都可以划分为多个工序/步骤/子工程,这些工序有的可独立进行,但大多数和其他工序关联,即某工序的进行,要等到其他一些工序的完成才能开始。只有按一定的顺序完成了这些工序,才能正确完成整个工程。下面来看一些实际的例子。装配顺序问题Brown 教授早晨起床,他必须先穿好某些衣服,才能再穿其他衣服(如先穿袜子后穿鞋),其他一些衣服则可以按任意次序穿戴(如袜子...原创 2020-02-24 14:05:54 · 576 阅读 · 0 评论 -
最短路径问题06
最短路径问题是图论研究中的一个经典问题, 旨在寻找图中两结点之间的最短路径,即从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径。最短路径计算根据原点的数量,可以分为单源点最短路径和全源最短路径。单源点的最短路径问题,是在带权有向图中,求指定的一个顶点到其余各点的最短路径;全源最短路径是在有向或无向带权图中,求出所有顶点对之间的最短路径。求单源点最短路...原创 2020-02-22 21:50:31 · 974 阅读 · 0 评论 -
图的经典应用——最小生成树(MST,Minimum-cost Spanning Tree)05
引例1——架设通信网络的最小成本问题引例2——网络中信息传输的问题用于网桥(交换机) 设备的 STP (Spanning Tree Protocol)协议生成树实例生成树是连通图的极小连通子图。所谓极小是指若在树中任意增加一条边,则将出现一个回路;若去掉一条边,将会使之变成非连通图。生成树没有确定的根,通常称之为自由树。在自由树中选定一顶点做根,则成为一棵通常的树。从根开始,为每个顶点...原创 2020-02-21 21:09:13 · 681 阅读 · 0 评论 -
图的顶点查找问题——图的遍历04
图的广度优先遍历 BFS广度优先搜索算法,又称广度优先搜索算法,是连通图的一种遍历策略,也是最简单的图的搜索算法之一。Dijksta 单源最短路径算法和 Prim 最小生成树算法都采用了与宽度优先搜索类似的思想。基本思想伪代码描述(1)顶点v入队列。(2)当队列非空时则继续执行,否则算法结束。(3)出队列取得队头顶点v;访问顶点v并标记顶点v已被访问。(4)查找顶点v的第一个邻接顶...原创 2020-02-19 14:23:43 · 2814 阅读 · 0 评论 -
图的基本操作03
邻接矩阵的操作#include<stdio.h>#include<stdlib.h>#define VERTEX_NUM 64typedef struct{ char VertexArray[VERTEX_NUM]; //顶点数组 int AdjMatrix[VERTEX_NUM][ VERTEX_NUM]; //邻接矩阵 int...原创 2020-02-17 20:05:34 · 248 阅读 · 0 评论 -
图的存储结构及实现02
常用的图的存储结构有邻接矩阵、邻接表、十字链表和邻接多重表。图的数组表示法——邻接矩阵图的逻辑结构分为顶点集合和边的集合两部分,一个顶点是一个元素,因此可以用一个一维数组存放顶点数据;一条边是用其关联的两个顶点表示的,即一个边元素有两个数据域,因此可以用一个矩阵存放顶点间的邻接关系(即边或弧),这个二维数组也被称为邻接矩阵。如果两个顶点是关联的,那么矩阵的值可以记为1,否则记为0。邻...原创 2020-02-15 21:31:24 · 394 阅读 · 0 评论 -
结点逻辑关系任意的非线性结构——图01
图的逻辑结构对于图中结点与结点间“多对多”的关系,采用集合的方式描述。图的定义和基本术语图的定义图的表示形式图的表示可以用文字符号表述,也可以用图形描述,有下面两种形式:1)集合表示:对于一个图G,如果将其记为G = <V, E>,并写出V和E的集合表示,称为图的集合表示。2)图形表示:用小圆圈表示V中的结点,用由u指向v的有向线段表示有向边<u, v>...原创 2020-02-15 14:43:58 · 645 阅读 · 0 评论 -
数据处理方法——排序技术(分配排序待补充)
排序中相关问题说明:排序的分类在内排序中,主要进行两种操作:比较和移动。比较指关键字之间的比较,这是要做排序最起码的操作。移动指记录从一个位置移动到另一个位置。排序算法的方法有很多,如果按照排序过程中依据的主要操作来进行分类,可以分为插入排序、交换排序、选择排序、归并排序和分配排序五大类;而如果按照算法的复杂度来进行分类的话,可以分为三类:简单的排序算法 O(n^2);先进的排序算法...原创 2020-02-26 20:29:13 · 949 阅读 · 0 评论