![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 64
Eternity_GQM
ICPC铁牌选手,努力向上的研0软工蒟蒻,欢迎私信评论交流!!!
展开
-
【单调栈】【概念讲解&&模板代码】
单调栈 概念讲解+模板代码原创 2022-08-03 20:03:18 · 759 阅读 · 0 评论 -
【头结点】【头指针】【首元结点】
头结点、头指针、首元结点原创 2022-01-14 00:26:37 · 6586 阅读 · 1 评论 -
2021-12-23【数据结构课程设计】【关键路径】
关键路径:通常把计划、施工过程、生产流程、程序流程等都当成一个工程。工程通常分为若干个称为“活动”的子工程。完成了这些“活动”,这个工程就可以完成了。通常用 AOE-网来表示工程。AOE-网是一个带权的有向无环图,其中,顶点表示事件(EVENT),弧表示活动,权表示活动持续的时间。 AOE-网可以用来估算工程的完成时间。可以使人们了解:(1)研究某个工程至少需要多少时间?(2)哪些活动是影响工程进度的关键?由于 AOE-网中的有些活动可以并行进行,从开始点到各个顶点,以致从开始点到完成点的有向路径可原创 2021-12-23 14:46:13 · 3223 阅读 · 1 评论 -
2021-12-11 【数据结构平时实验】【树】
#include <bits/stdc++.h>using namespace std;#define TElemType char#define Status int//------------二叉树的二叉链表存储表示-------------typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild; //左右孩子指针} BiTNode, *BiTree;Status Cre原创 2021-12-11 00:26:05 · 1051 阅读 · 0 评论 -
2021-12-11 【数据结构平时实验】【图】
7-1.将图以邻接矩阵存储,实现DFS。code#include<bits/stdc++.h>using namespace std;int book[100], sum, n, e[100][100];void dfs(int cur){ printf("%d ", cur); sum++; if (sum == n) return; for (int i = 1; i <= n; i++){ if (e[cur][i] == 1 && boo原创 2021-12-11 00:20:36 · 872 阅读 · 0 评论 -
2021-11-25【数据结构/严蔚敏】【Dijkstra】【代码实现算法7.15】
知识点单源最短路径:DijkstraDikstra算法也用来解决单源最短路径问题。Dijkstra是非常高效而且稳定的算法。Bellman-Ford算法,提到它在现实中的模型是找警察问路。在现实中 Dijkstra有另外的模型,例如多米诺骨牌,可以想象下面的场景:在图中所有的边上排满多米诺骨牌,相当于把骨牌看成图的边。一条边上的多米诺骨牌数量和边的权值(例如长度或费用)成正比,规定所有骨牌倒下的速度都是一样的。如果在一个结点上推倒骨牌,会导致这个结点上的所有骨牌都往后面倒下去。在起点 sss 推倒原创 2021-11-29 23:33:47 · 1491 阅读 · 0 评论 -
2021-11-26【数据结构/严蔚敏】【关键路径】【代码实现算法7.13-7.14】
知识点与AOV—网相对应的是AOE—网(Activity On Edge)即边表示活动的网。AOE—网是一个带权的有向无环图,其中,顶点表示事件(Event),弧表示活动,权表示活动持续的时间。通常,AOE—网可用来估算工程的完成时间。例如,图7.29是一个假想的有11项活动的AOE—网。其中有9个事件, ,2,, ,,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。如v表示整个工程开始,v,表示整个工程结束,vs表示a,和as已经完成,a,和ag可以开始。与每个活动相联系的数是执行该活动所原创 2021-11-26 01:14:32 · 910 阅读 · 1 评论 -
2021-12-3【数据结构/严蔚敏】【弗洛伊德(Floyd)】【代码实现算法7.16】
弗洛伊德算法实现更多数据结构代码实现请关注我的专栏数据结构或者进入2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】学习原创 2021-11-25 17:05:02 · 526 阅读 · 1 评论 -
2021-11-25【数据结构/严蔚敏】【拓扑排序】【代码实现算法7.12】
拓扑排序(1)在有向图中选一个没有前驱的顶点且输出之;(2)在图中删除该顶点和所有以它为尾的弧。重复上述两个步骤,直至全部顶点均已输出,或者当前图中不存在无前驱节点的顶点为止,后一种情况则说明有向图中存在环最后得到的有向图的拓扑序列为:算法实现//算法7.12Status TopologicalSort(ALGraph G){ int i, k, count, indegree[MAX_VERTEX_NUM]; SqStack S; ArcNode *p; FindInDegree原创 2021-11-25 17:00:50 · 1567 阅读 · 0 评论 -
2021-11-25【数据结构/严蔚敏】【关节点&重连通分量】【代码实现算法7.10-7.11】
知识点假若在删去顶点v以及和v相关联的各边之后,将图的一个连通分量分割成两个或两个以上的连通分量,则称顶点v为该图的一个关节点(articulation point)。一个没有关节点的连通图称为是重连通图(biconnectedgraph)。在重连通图上,任意一对顶点之间至少存在两条路径则在删去某个顶点以及依附于该顶点的各边时也不破坏图的连通性。若在连通图上至少删去k个顶点才能破坏图的连通性,则称此图的连通度为k。关节点和重连通在实际中有较多应用。显然,一个表示通信网络的图的连通度越高,其系统越可靠,无原创 2021-11-25 00:38:00 · 587 阅读 · 0 评论 -
2021-11-24【数据结构练习题】【二叉搜索树的插入&删除】
题目3(二叉排序树)[问题描述]利用二叉查找树(又称为二叉排序树、二叉搜索树)实现对输入的英文单词进行搜索,同时可给出单词出现的次数。(难易程度:高)[实验目的]1、掌握二叉链表的存储结构。2、掌握搜索和过滤的方法。3、掌握二叉排序树的插入和删除操作。[实验内容及要求]1、构造二叉查找树(1)从文本文件中读入文本内容,能够分离出单词,过滤掉阿拉伯数字和标点符号,并将英文字母的大写形式全部转换成小写形式。(2)按照英文字母表的顺序构造英文单词的二叉查找树。当两个英文单词的首字母相同时,按第二原创 2021-11-24 21:08:15 · 2021 阅读 · 5 评论 -
2021-11-23【数据结构/严蔚敏】【最小生成树:普里姆( Prim )算法/克鲁斯卡尔( Kruskal )算法】【代码实现算法7.7-7.8】
最小生成树假设要在 n 个城市之间建立通信联络网,则连通 n 个城市只需要 n —1条线路。这时,自然会考虑这样一个问题,如何在最节省经费的前提下建立这个通信网。在每两个城市之间都可以设置一条线路,相应地都要付出一定的经济代价。 n 个城市之间,最多可能设置 n ( n —1)/2条线路,那么,如何在这些可能的线路中选择 n —1条,以使总的耗费最少呢?可以用连通网来表示 n 个城市以及 n 个城市间可能设置的通信线路,其中网的顶点表示城市,边表示两城市之间的线路,赋于边的权值表示相应的代价。对于 n原创 2021-11-23 22:39:11 · 1823 阅读 · 0 评论 -
2021-11-23【数据结构/严蔚敏】【无向图的联通分量和生成树】【代码实现算法7.7-7.8】
无向图的联通分量和生成树这三个顶点集分别加上所有依附于这些顶点的边,便构成了非连通图G3G_3G3的3个联通分量分量,如图7.3( b )所示。设E(G)E ( G )E(G)为连通图 G 中所有边的集合,则从图中任一顶点出发遍历图时,必定将 E(G)E ( G )E(G)分成两个集合 T(G)T ( G )T(G)和 B(G)B ( G )B(G),其中 T(G)T ( G )T(G)是遍历图过程中历经的边的集合; B(G)B ( G )B(G)是剩余的边的集合。显然, T(G)T ( G )原创 2021-11-23 16:57:33 · 845 阅读 · 0 评论 -
2021-11-23【数据结构/严蔚敏】【邻接表&图&DFS&BFS】【代码实现算法7.1-7.6】
更多数据结构代码实现请关注我的专栏数据结构或者进入2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】学习邻接表与邻接矩阵实现功能类似,详情见邻接矩阵邻接表数据结构声明//边表节点结构,一个adjvex用来存储邻接点的位置,一个next指针用来指向下一个节点typedef struct EdgeNode{ int adjvex; struct EdgeNode * next;} EdgeNode; //顶点表节点结构,一个data用来存储数据,一个first原创 2021-11-23 15:24:50 · 1180 阅读 · 0 评论 -
2021-11-18【数据结构/严蔚敏】【邻接矩阵&图&DFS&BFS】【代码实现算法7.1-7.6】
声明:#include <bits/stdc++.h>using namespace std;#define OVERFLOW -2 //内存溢出错误常量#define OK 1 //表示操作正确的常量#define ERROR 0 //表示操作错误的常量#define TRUE 1 //表示逻辑真的常量#define FALSE 0 //表示逻辑假的常量typedef int Status; //指定状态码的类型是int#define原创 2021-11-18 01:58:12 · 1163 阅读 · 3 评论 -
2021-11-9【数据结构平时实验】【线性表&栈和队列】
第二章 线性表2-1.请编写26个字母按特定字母值插入或删除的完整程序,可自行选用顺序存储或链表结构。#include <bits/stdc++.h>using namespace std;typedef char ElemType;//链表结构体typedef struct LNode{ ElemType data; LNode *next;} LNode, *LinkList;//链表初始化bool InitList(LinkList &L)原创 2021-11-09 21:22:00 · 808 阅读 · 0 评论 -
2021-10-31【数据结构练习题】【删除结点*s的直接前驱】
题目描述:若在长度大于1的循环链表中,既无头结点也无头指针。s为指向链表中某个结点的指针,试编写算法删除结点*s的直接前驱。头结点:头结点指的是链表中物理上的第一个结点头结点是为了操作的统一和方便而设立的,放在第一个元素的结点之前,其数据域一般无意义;头结点存在的意义是:在链表操作理论上第一个节点时(有头结点的链表里的第二个节点 不用直接改变头指针的地址 这样保持了操作的一致性)若链表为空(头节点的指针域为空) 存在头结点的链表的处理 非空链表,空链表 的方法一致头指针:头指针指的是指原创 2021-10-31 20:38:54 · 1640 阅读 · 0 评论 -
2021-10-31【数据结构练习题】【删除表中值大于min且小于max的节点】
题目描述:已知单链表L是一个递增有序表,试编写一高效算法删除表中值大于min且小于max的结点(若表中有这样的结点),同时释放被删除结点的空间,这里min和max是两个参数。请分析算法的时间复杂度。定义结构体struct LNode{ int data;//数据域 struct LNode *next; };typedef struct LNode LNode,* LinkList;初始化链表LinkList InitLNode(void){ LinkList head; head原创 2021-10-31 18:22:50 · 3765 阅读 · 0 评论 -
2021-10-27【数据结构/严蔚敏】【哈夫曼树&哈夫曼编码】【代码实现算法6.12-6.13】
哈夫曼树哈夫曼树又被称为最优二叉树,是一类带权(权值就是定义的路径上面的值,哈夫曼树中的权值可以理解为:权值大表明出现概率大)路径最短的二叉树。哈夫曼树是二叉树的一种应用,在信息检索中很常用路径:树中一个节点到另一个节点之间的分支构成这两个节点之间的路径;节点之间的路径长度(不带权):从一个节点到另一个节点之间的分支数量称为两个节点之间的路径长度。树的路径长度:从根节点到树中每一个节点的路径之和。节点的带权路径长度:从该节点到根节点之间的路径长度与节点上权的乘积。树的带权路径长度:树中所有叶子节原创 2021-10-27 12:08:54 · 1965 阅读 · 2 评论 -
2021-10-15【数据结构/严蔚敏】【线索二叉树】【代码实现算法6.5-6.7】
线索二叉树若结点有左子树,则其 lchild 域指示其左孩子,否则令其 lchild 域指示其前驱;若结点有右子树,则其 rchild 域指示其右r孩子,否则令其 rchild 域指示其后继;为了避免混淆,尚需改变结点的结构,增加两个标志域:lchildLTagdataRTagrchildLTag:0 lchild 域指示结点的左孩子1 lchild 域指示结点的前驱RTag:0 rchild 域指示结点的右孩子1 rchild 域指示结点的后继以原创 2021-10-25 18:05:44 · 559 阅读 · 0 评论 -
2021-10-16【严蔚敏数据结构代码实现合集】【c语言学习必备】
线性表2021-9-14【数据结构/严蔚敏】【顺序表】【代码实现算法2.1-2.7】2021-9-18【数据结构/严蔚敏】【单链表】【代码实现算法2.8-2.12】2021-9-18【数据结构/严蔚敏】【静态链表】【代码实现算法2.13-2.17】2021-9-19【数据结构/严蔚敏】【双向链表】【代码实现算法2.18-2.19】2021-9-19【数据结构/严蔚敏】【带头结点的线性表】【代码实现算法2.20-2.21】2021-9-19【数据结构/严蔚敏】【一元多项式的表示及相加、相减、相乘原创 2021-10-16 01:00:37 · 11090 阅读 · 8 评论 -
2021-10-15【数据结构/严蔚敏】【二叉树的前/中/后/递归/非递归遍历&层序遍历】【代码实现算法6.1-6.4】
二叉树的基本结构2021-10-15【数据结构/严蔚敏】【二叉树基本实现】因为非递归版需要用到 栈stack 的操作#define SElemType BiTree// -----栈的链式存储结构----------------------------------typedef struct SNode { SElemType data; // 数据域 struct SNode *next; // 指针域} SNode, *原创 2021-10-16 00:36:33 · 2225 阅读 · 0 评论 -
2021-10-15【数据结构/严蔚敏】【二叉树基本实现】
#include <bits/stdc++.h>using namespace std;#define TElemType char#define Status int//------------二叉树的二叉链表存储表示-------------typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild; //左右孩子指针} BiTNode, *BiTree;//--------原创 2021-10-15 23:05:42 · 2012 阅读 · 0 评论 -
2021-10-5【数据结构/严蔚敏】【串的堆分配存储表示】【代码实现算法4.4实现】
#include<bits/stdc++.h>using namespace std;#define Status int//---------串的堆分配存储表示--------------------typedef struct{ char *ch;//按照需要分配内存 int length;//串长度}HString;//---------基本操作的函数原型说明-----------------Status StrAssign(HString &T,char *ch原创 2021-10-05 00:36:55 · 556 阅读 · 0 评论 -
2021-10-5【数据结构/严蔚敏】【串的定长顺序存储表示】【代码实现算法4.1-4.3实现】
#include<bits/stdc++.h>using namespace std;#define Status int//--------------串的定长顺序存储表示-------------------#define MAXSTRLEN 255typedef unsigned char SString[MAXSTRLEN + 1]; //0号单元存放串的长度 Status StrAssign(SString &T, const char *chars) {原创 2021-10-05 00:05:09 · 773 阅读 · 1 评论 -
2021-9-28【数据结构/严蔚敏】【循环队列】
循环队列#include<bits/stdc++.h>using namespace std;#define QElemType int#define Status int#define MAXQSIZE 10//----------循环队列------------typedef struct{ QElemType *base; int front; int rear;} SqQueue;//----------函数申明------------Stat原创 2021-09-28 00:06:38 · 636 阅读 · 0 评论 -
2021-9-27【数据结构/严蔚敏】【链队列】
链队列#include<bits/stdc++.h>using namespace std;#define QElemType int#define Status int//---------链队列实现--------------typedef struct QNode{ QElemType data; struct QNode *next;} QNode, *QueuePtr;typedef struct{ QueuePtr front; Qu原创 2021-09-27 23:53:28 · 704 阅读 · 0 评论 -
2021-9-23【数据结构】【顺序表逆置】
#include <bits/stdc++.h>using namespace std;typedef char datatype;const int maxsize = 1024;typedef struct{ datatype data[maxsize]; int last;} SeqList, *PSeqList;void creat(PSeqList &L){ L = new SeqList; L->last = 0;原创 2021-09-23 23:40:09 · 396 阅读 · 0 评论 -
2021-9-23【数据结构】【单链表逆置】
#include<iostream>using namespace std;typedef char datatype;typedef struct node{ datatype data; struct node *next;} Lnode, *linklist;void creat(linklist &head){ char ch; linklist s,r; head = new Lnode; r=head; while((ch=getchar())原创 2021-09-23 23:33:04 · 483 阅读 · 0 评论 -
2021-9-22【数据结构/严蔚敏】【顺序栈&链式栈&迷宫求解&表达式求值】【代码实现算法3.1-3.5】
栈的顺序存储结构代码实现#include<bits/stdc++.h>using namespace std;#define SElemType int#define Status int#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 //-------栈的顺序存储结构-----------------typedef struct{ SElemType *base; //栈底 SElemT原创 2021-09-22 11:45:06 · 1876 阅读 · 4 评论 -
2021-9-19【数据结构/严蔚敏】【一元多项式的表示及相加、相减、相乘】【代码实现算法2.22-2.23】
代码实现不易,希望在理解的基础上可以自行实现切勿直接COPY#include <bits/stdc++.h>using namespace std;#define Status inttypedef struct{ float coef; int expn;} term,ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} * Link, *Position;t原创 2021-09-20 01:10:23 · 1489 阅读 · 0 评论 -
2021-9-19【数据结构/严蔚敏】【带头结点的线性表】【代码实现算法2.20-2.21】
300多行,码字不易,点个赞吧!!!#include <bits/stdc++.h>using namespace std;#define ElemType int#define Status inttypedef struct LNode{ ElemType data; struct LNode *next;} * Link, *Position;typedef struct{ Link head, tail; int len;} LinkL原创 2021-09-19 21:08:36 · 701 阅读 · 0 评论 -
2021-9-19【数据结构/严蔚敏】【双向链表】【代码实现算法2.18-2.19】
双向链表#include <bits/stdc++.h>using namespace std;#define ElemType int#define Status inttypedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;} DuLNode, *DuLinkList;void Init_DuL(DuLinkList &L){原创 2021-09-19 18:47:32 · 764 阅读 · 1 评论 -
2021-9-18【数据结构/严蔚敏】【静态链表】【代码实现算法2.13-2.17】
#include<bits/stdc++.h>using namespace std;#define Status int#define ElemType int#define MAXSIZE 1000typedef struct{ ElemType data; int cur;} compoent, SLinkList[MAXSIZE];//算法2.13int LocateElem_SL(SLinkList S,ElemType e){ //在静态链原创 2021-09-18 19:42:36 · 795 阅读 · 0 评论 -
2021-9-18【数据结构/严蔚敏】【单链表】【代码实现算法2.8-2.12】
#include<bits/stdc++.h>using namespace std;#define ElemType int #define Status inttypedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;//算法2.8//获得第i个元素把他赋给eStatus GetElem_L(LinkList L,int i,ElemType &e){原创 2021-09-18 17:36:17 · 2163 阅读 · 2 评论 -
2021-9-14【数据结构/严蔚敏】【顺序表】【代码实现算法2.1-2.7】
#include<bits/stdc++.h>using namespace std;#define MaxSize 100#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define ElemType int #define Status inttypedef struct{ ElemType *elem; int length; int listsize;}SqList;Status Init原创 2021-09-14 22:03:28 · 5595 阅读 · 17 评论