408数据结构学习
文章平均质量分 58
小二康
小二的学习空间
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构学习:顺序表的创建
数据结构学习:顺序表的创建如何使用代码创建一个静态顺序表,并初始化#include <iostream>using namespace std;#define MaxSize 10 //定义最大长度typedef struct{ int data[MaxSize]; //采用静态数组来存放数据元素 int length; //顺序表的当前长度}SqList; //定义结构体顺序表的名称为SqListvoid InitList(SqList &L){ fo原创 2021-07-23 10:08:15 · 4118 阅读 · 3 评论 -
数据结构学习:排序
数据结构学习:排序排序(Sort),就是重新排列表中的元素,使表中的元素满⾜按关键字有序的过程。算法的稳定性。若待排序表中有两个元素Ri 和Rj ,其对应的关键字相同即keyi = keyj ,且在排序前Ri 在Rj 的前⾯,若使⽤某⼀排序算法排序后,Ri 仍然在Rj 的前⾯,则称这个排序算法是稳定的,否则称排序算法是不稳定的。排序:内部排序:数据都在内存中外部排序:数据太多无法全部放入内存文章目录1.插⼊排序2.希尔排序(Shell Sort)3.冒泡排序4.快速排序5.简单选择排序6.堆原创 2021-08-12 09:59:43 · 602 阅读 · 0 评论 -
数据结构学习:查找
数据结构学习:查找查找 —— 在数据集合中寻找满⾜某种条件的数据元素的过程称为查找查找表(查找结构)—— ⽤于查找的数据集合称为查找表,它由同⼀类型的数据元素(或记录)组成关键字 —— 数据元素中唯⼀标识该元素的某个数据项的值,使⽤基于关键字的查找,查找结果应该是唯⼀的。对查找表的常⻅操作①查找符合条件的数据元素②插⼊、删除某个数据元素查找算法的评价指标查找⻓度——在查找运算中,需要对⽐关键字的次数称为查找⻓度平均查找⻓度(ASL, Average Search Length )—— 所有原创 2021-08-12 09:53:33 · 338 阅读 · 0 评论 -
数据结构学习:图的拓扑排序和AOV网
数据结构学习:图的拓扑排序和AOV网AOV⽹(Activity On Vertex NetWork,⽤顶点表示活动的⽹):⽤DAG图(有向⽆环图)表示⼀个⼯程。顶点表示活动,有向边<Vi , Vj >表示活动Vi 必须先于活动Vj 进⾏拓扑排序:在图论中,由⼀个有向⽆环图的顶点组成的序列,当且仅当满⾜下列条件时,称为该图的⼀个拓扑排序:① 每个顶点出现且只出现⼀次。② 若顶点A在序列中排在顶点B的前⾯,则在图中不存在从顶点B到顶点A的路径。或定义为:拓扑排序是对有向⽆环图的顶点的⼀种原创 2021-08-12 09:35:57 · 446 阅读 · 0 评论 -
数据结构学习:图的最小生成树
数据结构学习:图的最小生成树连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为n,则它的生成树含有 n-1 条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。对于⼀个带权连通⽆向图G = (V, E),⽣成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设 R 为 G 的所有⽣成树的集合,若 T 为 R 中边的权值之和最⼩的⽣成树,则 T 称为 G 的最⼩⽣成树最⼩⽣成树可能有多个,但边的权值之和总是唯⼀且最⼩的最⼩⽣成树的边数 = 顶原创 2021-08-12 09:32:26 · 1701 阅读 · 0 评论 -
数据结构学习:图的基本操作
数据结构学习:图的基本操作图的基本操作: • Adjacent(G,x,y):判断图G是否存在边<x, y>或(x, y)。 • Neighbors(G,x):列出图G中与结点x邻接的边。 • InsertVertex(G,x):在图G中插入顶点x。 • DeleteVertex(G,x):从图G中删除顶点x。 • AddEdge(G,x,y):若无向边(x, y)或有向边<x, y>不存在,则向图G中添加该边。 • RemoveEdge(G,x,y原创 2021-08-12 09:27:56 · 2105 阅读 · 0 评论 -
数据结构学习:图的存储
数据结构学习:图的存储图的存储:邻接矩阵法:#define MaxVertexNum 100 //顶点数的最大值typedef struct{ char Vex[MaxVertexNum]; //顶点表 int Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵,边表 int vexnum,arcnum; //图的当前顶点数和边数}MGraph;第i个结点的度 = (邻接矩阵中)第i行(或第i列)的非零元素个数有向图中第i个结点的出度原创 2021-08-12 09:24:11 · 656 阅读 · 0 评论 -
数据结构学习:图的基本概念
数据结构学习:图的基本概念图G由顶点集V和边集E组成,记为G = (V, E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)集合。若V = {v1 , v2 , … , vn },则用|V|表示图G中顶点的个数,也称图G的阶,E = {(u, v) | u属于V, v属于V},用|E|表示图G中边的条数。注意:线性表可以是空表,树可以是空树,但图不可以是空,即V一定是非空集若E是无向边(简称边)的有限集合时,则图G为无向图。边是顶点的无序对,记为(v, w)或(w原创 2021-08-12 09:20:18 · 737 阅读 · 0 评论 -
数据结构学习:平衡二叉树和哈夫曼树
数据结构学习:平衡二叉树和哈夫曼树平衡二叉树:树上任一结点的左子树和右子树的深度之差不超过1结点的平衡因子 = 左子树高 - 右子树高所以平衡二叉树结点的平衡因子绝对值小于等于1平衡二叉树的插入从插入点往回找第一个不平衡结点,调整以该结点为根的子树最小不平衡子树: 从插入点往回找第一个不平衡结点,以该结点为根的子树在插入操作中,只要将最小不平衡子树调整为平衡,则其他祖先结点都会恢复平衡调整最小不平衡子树目标:1.恢复平衡2.保持二叉排序树的特性调整最小不平衡子树ALL: 在A原创 2021-07-31 19:21:47 · 917 阅读 · 0 评论 -
数据结构学习:二叉排序树
数据结构学习:二叉排序树二叉排序树:左子树上所有结点的关键字均小于根结点的关键字右子树上所有结点的关键字均大于根结点的关键字左子树和右子树又各是一棵二叉排序树左子树根节点 < 根节点值 <右子树根节点中序遍历的话,可以得到一个递增的有序序列二叉排序树的查找:若树非空,目标值与根节点的值比较:若相等,则查找成功;若小于根节点,则在左子树上查找;若大于根结点,则在右子树上查找;查找成功,返回结点指针,失败返回NULL;// 二叉排序树的查找typedef struct原创 2021-07-31 19:17:51 · 355 阅读 · 0 评论 -
数据结构学习:树,二叉树和森林
数据结构学习:树,二叉树和森林树是一种递归定义的的数据结构双亲表示法(顺序存储)每个结点中保存指向双亲的指针// 双亲表示法#define Max_TREE_SIZE 100 //树中最多结点数typedef struct //树的定义{ ElemType data; //数据元素 int parent; //双亲}PTNode;typedef struct //树的类型定义{ PTNode node[Max_TREE_SIZE]; //双亲表示原创 2021-07-31 19:15:36 · 329 阅读 · 0 评论 -
数据结构学习:二叉树
数据结构学习:二叉树二叉树是n(n>=0)个结点的有限集合:1.空二叉树的n=02.由一个根节点和两个互不相交的被称为跟的左右子树组成。左子树和右子树又分别是一颗二叉树。特点:每个结点最多有两棵子树左右子树不能颠倒(有序)满二叉树:一个高度为h,且含有2^h-1个结点的二叉树特点:只有最后一层又叶子结点,其他结点都有两个子结点不存在度为1 的结点按层序从左至右从1开始编号,结点i的左孩子为2i,有孩子为2i+1,结点i的父节点为[i/2](向下取整)(如果有的话)。完全二原创 2021-07-31 19:03:23 · 823 阅读 · 0 评论 -
数据结构学习:树的基本概念
数据结构学习:树的基本概念空树:结点数为0的树非空树:有且仅有一个节点没有后继的结点为叶子结点没有前驱的结点为根节点除了根节点外,任何一个结点都有且仅有一个前驱树是n(n>=0)个结点的有限集合,n = 0时,称为空树在任意一个非空树中:有且仅有一个特定的根节点当n>1时,其余结点可分为m个互不相交的有限集合T1,T2,……,其中每个集合本身又是一棵树,并且称为根节点的子树树是一种递归定义的数据结构理解父结点,祖宗结点,子结点,兄弟结点树的深度(层次)(默认从1开始)结原创 2021-07-31 18:52:39 · 566 阅读 · 0 评论 -
数据结构学习:串
数据结构学习:串串,即字符串(String)是由零个或多个字符组成的有限序列。一般记为:S = ‘a1 a2 ······an ’ (n ≥0)其中,S是串名,单引号括起来的字符序列是串的值;ai 可以是字母、数字或其他字符;串中字符的个数n称为串的长度。n = 0时的串称为空串(用∅表示)。子串: 串中任意个连续的字符组成的子序列。主串: 包含子串的串。字符在主串中的位置: 字符在串中的序号。子串在主串中的位置: 子串的第一个字符在主串中的位置 。注意:位序从1开始而不是从0开始M =原创 2021-07-31 18:50:20 · 766 阅读 · 0 评论 -
数据结构学习:前缀中缀后缀表达式转化
数据结构学习:前缀中缀后缀表达式转化中缀转后缀的手算方法:① 确定中缀表达式中各个运算符的运算顺序② 选择下一个运算符,按照「左操作数 右操作数 运算符」的方式组合成一个新的操作数③ 如果还有运算符没被处理,就继续 ②由于运算顺序不唯一,因此对应的后缀表达式也不唯一“左优先”原则:只要左边的运算符能先计算,就优先算左边的后缀表达式的手算方法:从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数用栈实现后缀表达式的计算:①从左往右扫描下一个元素,原创 2021-07-31 18:45:40 · 3141 阅读 · 0 评论 -
数据结构学习:链栈实现括号匹配
数据结构学习:链栈实现括号匹配使用链栈来判断输入的括号是否左右匹配//联系,使用栈结构来判断输入的括号是否符合规则#includeusing namespace std;typedef struct LinkNode{char data;struct LinkNode *next;}LinkNode; //链栈结点定义typedef struct{LinkNode *top;}LinkStack;//定义链栈头指针//初始化链栈void InitStack(LinkStac原创 2021-07-31 18:41:31 · 1495 阅读 · 0 评论 -
数据结构学习:队列
数据结构学习:队列栈(Stack)是只允许在一端进行插入或删除操作的线性表队列(Queue)是只允许在一端进行插入,在另一端删除的线性表队列的特点:先进先出InitQueue(&Q):初始化队列,构造一个空队列Q。DestroyQueue(&Q):销毁队列。销毁并释放队列Q所占用的内存空间。EnQueue(&Q,x):入队,若队列Q未满,将x加入,使之成为新的队尾。DeQueue(&Q,&x):出队,若队列Q非空,删除队头元素,并用x返回。GetHe原创 2021-07-27 16:16:56 · 356 阅读 · 0 评论 -
数据结构学习:栈与链栈的定义与基本操作
数据结构学习:栈与链栈线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n = 0 时,线性表是一个空表。栈的定义栈(Stack)是只允许在一端进行插入或删除操作的线性表InitList(&L):初始化表。构造一个空的线性表L,分配内存空间。DestroyList(&L):销毁操作。销毁线性表,并释放线性表L所占用的内存空间。ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。ListDelete(&原创 2021-07-27 16:10:28 · 898 阅读 · 2 评论 -
数据结构学习:静态链表
数据结构学习:静态链表定义一个结构体,里面用来储存数据,和下一个数据的位置相当于一个结构体数组,数组里面的元素的结构体#define MaxSize 10 // 静态链表的最大长度typedef struct{ ElemType date; //静态链表的数据域 int next; //记录下一个元素的位置}SLinkList[MaxSize];SLinkList a; //定义a是一个静态链表, 相当于定义了一个长度为 MaxSize的Node型数组初始化静态链表:把 a原创 2021-07-25 15:34:07 · 155 阅读 · 0 评论 -
数据结构学习:&的含义以及用法
数据结构学习:1.1线性表传入参数的引用“&” —— 对参数的修改结果需要“带回来”没有使用&值时:#include <iostream>using namespace std;void test(int x){ x = 1024; cout<<"test函数内部为: "<<x<<endl;}int main(){ int x = 1; cout <<"调用test之前为: "<< x<原创 2021-07-23 09:05:05 · 6202 阅读 · 1 评论 -
顺序表的基本操作之插入,删除与查找
数据结构学习:顺序表的基本操作之插入与删除在顺序表当中插入元素ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e插入位置后面的元素一次向后移动一位先定义一个顺序表#define MaxSize 10 //定义最大长度typedef struct{ int data[MaxSize]; //采用静态数组来存放数据元素,ElemType为数据类型in int length; //顺序表的当前长度}SqList; //定义结构体顺序表的名称为S原创 2021-07-23 11:41:53 · 3944 阅读 · 0 评论 -
数据结构学习:单链表的查找以及求表长
数据结构学习:单链表的查找以及求表长单链表的查找GetElem(L,i):按位查找操作。获取表L中第i个位置的元素的值。LocateElem(L,e):按值查找操作。在表L中查找具有给定关键字值的元素。定义一个链表struct LNode{ //定义单链表结点类型 ElemType data; //结点的数据域,用来存放数据 struct LNode *next;//指针域,存放指向下一个结点的指针}LNode *LinkList;按位查找LNode *GetElem(LinkL原创 2021-07-24 11:03:57 · 1836 阅读 · 0 评论 -
数据结构学习:单链表的基本操作总结
数据结构学习:单链表的基本操作总结#include <iostream>#include<stdlib.h>using namespace std;//定义单链表结点类型struct LNode{ ElemType data; //结点的数据域,用来存放数据 struct LNode *next;//指针域,存放指向下一个结点的指针}LNode *LinkList;//重命名// 初始化单链表(带头结点)bool IntiList(LinkList原创 2021-07-24 11:23:10 · 537 阅读 · 1 评论 -
数据结构学习:单链表的基本操作之插入与删除
单链表的基本操作单链表的基本操作之插入ListInsert(&L,i,e):插入操作。在表L中的第i个位置上插入指定元素e。即将插入位置的前一个节点的指针指向插入节点,插入节点的指针指向原来第i个位置的节点插入前:插入后://在带头结点的链表的第i个位置插入元素ebool ListInsert(LinkList &L,int i, ElemType e){ if(i<1) return false; LNode *p; //定义一个指针p int j原创 2021-07-24 10:45:35 · 2865 阅读 · 0 评论 -
数据结构学习:顺序表之双链表与循环链表
数据结构学习:顺序表之双链表与循环链表//定义双链表结点typedef struct DNode{ ElemType data; //数据域 struct DNode *prior,*next; //前指针和后指针}DNode,*DLinkList; //其中DLinkList等价于DNode*初始化双链表//初始化双链表bool InitDLinkList(DLinkList &L){ L = (DNode *)malloc(sizeof(DNode));原创 2021-07-25 15:29:23 · 210 阅读 · 0 评论
分享