数据结构
小狐狸梦想去童话镇
A fox in pursuit of a rabbit.
展开
-
数据结构之排序(期末复习)
【知识框架】原创 2020-07-05 19:20:34 · 1178 阅读 · 3 评论 -
数据结构之查找(期末复习)
【知识框架】一、查找的基本概念1、查找表查找表是由同一类的数据元素(或记录)构成的集合。集合中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。2、关键字关键字是数据结构(或记录)中某个数据项的值,用它可以标识一个数据元素(或记录)。主关键字:关键字可以唯一标识一个记录;(不同的记录,主关键字不同)次关键字:用以识别若干记录的关键字;3、查找查找是指根据给定的某个值,在查找表中确定一个其关键字等于给定值的记录或数据元素。若表中存在该数据,则查找成功;否则查找不成功;原创 2020-07-01 18:38:33 · 1032 阅读 · 0 评论 -
最小生成树、最短路径、拓扑排序、关键路径
普利姆算法和克鲁斯卡尔算法是两个利用MST性质构造最小生成树的算法。一、普利姆算法(“加点法”)二、克鲁斯卡尔算法原创 2020-06-24 11:04:19 · 751 阅读 · 0 评论 -
图与图的基本术语
一、图的定义图G由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合。通俗理解:V是顶点的集合(不能为空),E是边的集合(可以为空)。有向图:若边集E为有向边,则图为有向图,<x,y> x为有向边的始点(也称为弧尾),y 为有向边的终点(也称为弧头);无向图:若边集E为无向边,则图为无向图,(x,y) 与(y,x)是同一条边;...原创 2020-06-14 22:17:08 · 883 阅读 · 0 评论 -
哈夫曼树的基本概念及创建(c/c++)
一、一些基本概念1、路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。2、路径长度:路径上的分支数目称作路径长度。3、树的路径长度:从树根到每一结点的路径长度之和。4、权:赋予某个实体的一个量,是对实体的某个或某些属性的数值化描述。5、结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。6、树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记为:7、哈夫曼树:假设有m个权值{w1,w2,…,wm},可以构造一棵含n个叶子结点的二叉树,每个叶子结点的权为原创 2020-05-16 16:12:14 · 5075 阅读 · 3 评论 -
遍历二叉树(例题及代码)
一、遍历二叉树1、遍历方法:先序遍历(DLR):根结点、左子树、右子树;中序遍历(LDR):左子树、根结点、右子树;后序遍历(LRD):左子树、右子树、根结点;2、给出一个二叉树,试写出其先序、中序、后序遍历例如:3、给出先序遍历和中序遍历,可求后序遍历;给出中序遍历和后序遍历,可求出先序遍历;注意:给出先序遍历和后序遍历无法确定唯一的二叉树,故无法确定其中序遍历;例如:...原创 2020-04-22 20:59:24 · 3492 阅读 · 0 评论 -
树的概念与二叉树基础内容
一、树和二叉树的定义1、树的定义树是n(n≥0)个结点的有限集,n=0时称为空树;对于非空树(n≠0)而言:(1)有且仅有一个称为根的结点;(2)除根节点以外的其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并称为根的子树;2、树的基本术语(1)结点的度: 结点拥有的子树数称为结点的度;(2)树的度: 树的度是树内结点度的最大值...原创 2020-04-15 19:19:42 · 211 阅读 · 0 评论 -
数组和广义表应注意的问题
一、数组的地址计算1、二维数组(按行优先存储计算)2、推广到n维数组:设界偶为:c1≤j1≤d1…cn≤jn≤dn二、广义表1、定义及注意事项广义表通常用括号()括起来,用‘ ,’来分割其中元素,规定用小写字母来表示原子,用大写字母来表示广义表。2、广义表的深度一个广义表的深度是指该广义表展开后所含括号的层数...原创 2020-04-08 19:06:27 · 356 阅读 · 0 评论 -
串的概念及存储方式
一、串的基本概念1.定义串是由零个或多个字符组成的有限序列。一 般记为s= “a1a2a3…an”其中,s是串的名, 用双引号括起来的字符序列是串的值;an可以是字母、 数字或其他字符;串中字符的数目n称为串的长度。零个字符的串称为空串, 其长度为零。2.基本概念空格串:由一个或多个空格组成的字符串称为空格串;(空串与空格串的区别:空串长度为0,而空格串长度不为零。)子串:串中任意...原创 2020-04-06 16:20:09 · 3491 阅读 · 1 评论 -
队列的定义及基本操作
一、定义1.队列是一种先进先出的线性表,它的操作只能在表的两端进行2.分类:链队列——链式表示 ;循环队列——顺序表示二、链队列结点结构:typedef struct QNode{ int data; struct QNode *next;}QNode,*QPtr;链队列结构typedef struct { QPtr *front; ...原创 2020-03-25 16:12:31 · 940 阅读 · 0 评论 -
栈的定义及基本操作
一、栈的定义、性质及存储方式1、定义:栈是仅限定在表的一端操作的线性表2、性质:先进后出(后进先出)3、栈的存储方式:顺序存储和链式存储二、顺序栈的基本操作顺序栈的类型定义typedef struct{ ElemType ST[maxsize]; int top;}stack;栈的压入操作(1)首先判断是否栈满,若栈满,则输出“栈满溢出”;(2)先指针top++,后...原创 2020-03-18 16:33:28 · 1694 阅读 · 0 评论 -
单链表的应用——单链表的连接、合并及逆序
#include<iostream>#include<stdio.h>#include<windows.h>#define N 5using namespace std;typedef struct Lnode{ int data; Lnode *next;}Lnode, *Linklist;Linklist Greatendlist(int...原创 2020-03-13 12:33:57 · 506 阅读 · 0 评论 -
双向链表的建立及基本操作
#include<windows.h>#include<iostream>#define N 5using namespace std;typedef struct DuLnode{ int data; struct DuLnode *prior; //前驱结点 struct DuLnode *next; //后继结点}DuLnode, *DuLink...原创 2020-03-11 21:20:15 · 219 阅读 · 0 评论 -
单链表的创建及操作
#include<stdio.h>#include<iostream>using namespace std;#define N 8typedef struct Lnode{ int data; struct Lnode *next;}Lnode, *Linklist;//类型定义 //函数声明void Initlist(Linklist L)...原创 2020-03-07 20:31:06 · 1612 阅读 · 0 评论 -
单链表的基本操作(三)单链表的创建
1、尾插法创建一个单链表(顺序输入一个数组)Linklist Createndlist(int a[N]){ Linklist L; L = (Lnode*)malloc(sizeof(Lnode)); if (L == NULL) { cout << "error"; exit(0); } else L->next = NULL; Linklist t...原创 2020-03-07 20:28:49 · 764 阅读 · 0 评论 -
单链表的基本操作(二)
2.插入一个结点的操作(1)在第i个元素前插入一个结点Insertlist(Linklist L, int i, ElemType e) { cin>>e;//键入要插入的值 p=L;j=0; while(p&&j<i-1) { p=p->next; j++ } if(!p||j>i-1...原创 2020-03-06 16:35:59 · 255 阅读 · 0 评论 -
顺序表的建立及基本操作
实验内容1、建立一个顺序表,输入n个元素并输出;2、查找线性表中的最大元素并输出;3、在线性表的第i个元素前插入一个正整数x;4、删除线性表中的第j个元素;5、将线性表中的元素按升序排列;6、将线性表中的元素就地逆序(只允许用一个暂存单元);#include<stdio.h>#include<iostream>#define MAXSIZE 100usi...原创 2020-02-29 18:55:35 · 5311 阅读 · 0 评论 -
单链表的定义、表示及操作(一)
一、链式存储结构的特点用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,每个结点都必须有指针域。二、单链表1.定义:每一个结点只含有一个指针域的链式结构称为单链表。2.单链表结点的类型定义:typedef struct Lnode{ int data; //数据域 struct Lnode *next; //指针域...原创 2020-03-04 12:12:30 · 8894 阅读 · 0 评论 -
数据类型和抽象数据类型
一、数据类型数据类型是一组性质相同的值的集合和定义在这个值集上的一组操作的总称,是某种程序设计中已经实现的数据结构。二、抽象数据类型(ADT)1.定义:由用户定义的表示应用问题的数据模型,即数据结构以及定义在此结构上的一组运算。2.特征:(1)数据抽象:用ADT描述程序程序处理的实体时,强调的是其本质特征、其所能完成的功能以及它和外部用户的接口(即外部使用它的方法)。(2)数据封装:将...原创 2020-02-22 16:31:35 · 4297 阅读 · 0 评论 -
数据结构 基本概念和术语
一、基本概念和术语1.数据:是客观事物的符号表示,是指所有能被输入到计算机中,且能被计算机处理的符号的集合(是计算机操作对象的总称)2.数据元素:是数据的基本单位,它通常作为一个整体来考虑和处理。3.数据项:是数据结构中讨论的最小单位(数据元素可以是数据项的集合)4.数据对象:是性质相同的数据元素的集合,是数据的一个子集。数据>数据对象>数据元素>数据项二、数据结构...原创 2020-02-19 17:07:43 · 875 阅读 · 0 评论 -
算法和算法分析
一、算法1.定义:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。2.特征:(1)有穷性:一个算法必须在执行有穷步之后结束,即算法中的每个步骤在有限的时间内完成。(2)确定性:每条指令必须有确定的含义,无二义性,在任何条件下,算法都只有一条执行路径。(3)可行性:一个算法是可以运行的(4)输入:有0个或多个输入。(5)输出:有一个或多个输出。...原创 2020-02-22 16:54:32 · 209 阅读 · 0 评论 -
线性表的定义与特点及抽象数据类型定义
一、线性表的定义由n(n>=0)个数据特性相同的元素构成的有限序列称为线性表。线性表中元素的个数n(n>=0)定义为线性表的长度,n=0时线性表称为空表。二、非空线性表及线性结构的特点1、存在唯一的一个被称为“第一个”的数据元素;2、存在唯一的一个被称为“最后一个”的数据元素;3、除第一个结点外,剩余的每个数据元素都只有一个前驱;4、除最后一个结点外,剩余的每个数据元素都...原创 2020-02-26 10:24:16 · 3155 阅读 · 0 评论 -
线性表的顺序存储表示
顺序表的顺序存储方式定义:用一组连续的存储单元依次存放线性表中的数据元素称为线性表的顺序存储结构。1、存储方法:用连续单元顺序存放表元素 loc(a1)表示第一个元素的地址; loc(ai)表示第i个元素的地址;2、顺序存储结构的地址计算方法3、定义线性表typedef ElemType Sqlist [N]; //俗称顺序表例如:typedef int Sqlis...原创 2020-02-29 17:43:01 · 1012 阅读 · 0 评论