- 2024-10-13定义模板,同时将类定义与类实现分离(C++,以栈为例)
一问题背景: 在以往单独实现树或栈时,只需要在开始使用typedef定义ElemType,后文便不必再考虑数据类型. 但是,在实现二叉树非递归遍历时,需要借助额外的栈,树内数据类型为ElemType,但是栈内的数据类型为树节点,或者说指向树的指针,c++自带<st
- 2024-04-28链式栈设计
链式栈接口设计/***@name:链式栈接口设计*@brief*@
[email protected]*@date2024/04/28*@version1.0:版本*@property:类比于顺序栈,链式栈也有一个栈顶和栈底。根据链式表特性,将第一个插入的值作为栈底,即尾节点作为栈底。首节点作为栈顶。*@note*CopyR
- 2023-10-208皇后问题用基本数据结构实现(不用stl)
1#include<iostream>2usingnamespacestd;34#defineSTACKSIZE25656intResult;//记录结果78typedefstruct9{10introw;11intcol;12}QueenPlace;1314typedefstruct15{16QueenPlace*pBase;17
- 2023-09-10模拟栈
#include<stdio.h>#include<malloc.h>#include<stdlib.h>//模拟栈的功能//自定义数据类型typedefstructNode//节点类型{ intdata;//存放的数据 structNode*pNext;//下一个结点的地址 }NODE,*PNODE;//将数据类型起别名typedefstruct
- 2023-07-11最大流与最小割
最大流问题给出起点、终点、边最大能传递的值,问从起点到终点最多能传多少阻塞流:不能再给终点增加值的流(最大流就是一种阻塞流)传统算法:新建一个剩余量的图,找路径、减去最小值、删路径,重复直到为阻塞流(不一定为最优解)Ford-Fulkerson算法(复杂度O(fm),没什么用,过不了模板题)相
- 2023-07-11二部图
二分图(二部图)概念:可分为两个集合,集合内的点无边相连的图判定:染色法intcol[MAXN];vector<int>ed[MAXN];boolbfs(){ col[1]=1; queue<int>qu; while(!qu.empty()){ intu=qu.front(); qu.pop(); for(autov:ed[u]){ if(!col[v]){ col[v]=2-col[u];
- 2023-07-11最小生成树
最小生成树定义边权和最小的生成树Kruskal算法让边从小到大排序,如果不在同一集合,就加入#include<bits/stdc++.h>usingnamespacestd;constintMAXN=5e3+10,MAXM=2e5+10;intn,m;inta[MAXN];intfind(intx){ if(a[x]==x)returnx; elsereturna[
- 2023-07-11基环树
基环树简单无向图有n个点n-1条边,那么它们会连成一条直线n个点n条边,相对多一条边,有且仅有一个环可以利用拓扑排序找这个环例题:F-Well-definedPathQueriesonaNamori#include<bits/stdc++.h>usingnamespacestd;constintMAXN=2e5+10,MAXM=2e5+10;intn,q;