
数据结构
嘴角上扬*
渴求力量的家伙毫无疑问地都在追求着战斗!-更木剑八
展开
-
数组模拟链表
快速了解 数组模拟链表过程!!!原创 2022-07-10 21:07:18 · 242 阅读 · 0 评论 -
子矩阵的和
代码#include<iostream>using namespace std;const int N = 1010;int s[N][N],a[N][N];int main(){ int n, m, q; cin >> n >> m >> q; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++原创 2022-02-10 16:37:17 · 433 阅读 · 0 评论 -
哈夫曼树打印
提供先序遍历序列,以*代替空节点,构建哈夫曼树代码#include <stdio.h>#include <stdlib.h>#define MaxSize 100#define Pstart 62typedef struct node { int key; int data; struct node *lchild,*rchild;}BTNode;typedef struct pnode { int key;原创 2021-12-02 15:51:17 · 2721 阅读 · 0 评论 -
哈夫曼树(数据结构)
文本读取 FILE *fp; char ch; string s; int a[270],num=0; HTNode ht[50]; HTCode hc[120]; memset(a,0,sizeof a); if((fp=fopen("编码前.txt","r"))==NULL)//如果读取出错 ,结束程序 { printf("File open error!"); exit(0); } while((ch=fgetc(fp))!=EO原创 2021-11-28 19:52:44 · 374 阅读 · 0 评论 -
排列数字(dfs模板)
题目描述给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 n。1<=n<=7输出格式按字典序输出所有排列方案,每个方案占一行。样例输入3样例输出1 2 31 3 22 1 32 3 13 1 23 2 1思路用两个数组,一个用作为存储位置的数组(从0,1开始都无所谓),标记是否到达响应的位置,另外一个作为标记数组(一般从1开始),代表哪些数字已经用过了代码#includ原创 2021-03-29 15:41:31 · 418 阅读 · 0 评论 -
846.n-皇后问题(AcWing)
题目描述n− 皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数 n,请你输出所有的满足条件的棋子摆法。输入格式共一行,包含整数 n。1<=n<=9输出格式每个解决方案占 n 行,每行输出一个长度为 n 的字符串,用来表示完整的棋盘状态。其中 . 表示某一个位置的方格状态为空,Q 表示某一个位置的方格上摆着皇后。每个方案输出完成后,输出一个空行。注意:行末不能有多余空格。样例输原创 2021-03-29 16:40:37 · 148 阅读 · 0 评论 -
844.走迷宫(ACwing)
题目描述给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷宫转载 2021-03-29 20:19:19 · 357 阅读 · 0 评论 -
二叉树左右子树交换(递归)
代码#include<iostream>#include<algorithm>#include<stack>using namespace std;typedef struct node{ int data; node * lchild,*rchild; int ltag, rtag;}*Tree;void build(Tree &T){ char ch; cin>>ch; if(ch == '#') T = NUL原创 2021-11-18 09:40:24 · 943 阅读 · 0 评论 -
3302.表达式求值(AcWing)
思路一个map确定符号的优先级 两个栈分别存储数字和符号首先检查是不是数字, 是,然后避免多位数字比如101*100 将101压入栈中还要检查 ‘1’后面是不是还有数字,不检查就会直接压入1而不是101其次确定是符号,如果是左括号 直接压入如果是有括号 进行计算 直到找到左括号 然后弹出如果都不是 则判断压入符号和栈顶符号的优先级,栈顶符号优先级高,则直接进行计算 调用计算函数, 然后压入该压入的计算符号 如果压入符号优先级高 则直接压入最后 判断符号栈是否空 不空,则进行计算 知.原创 2021-11-18 09:23:59 · 171 阅读 · 0 评论 -
3693.括号匹配(AcWing)
AC代码#include<iostream>#include<stack>#include<string>using namespace std;int main(){ int flag=1; string in; cin>>in; stack<char> s; for(int i = 0; i < in.length() ; i++) { if(in[i]=='('||in[i]=='['||in[.原创 2021-11-18 09:09:44 · 125 阅读 · 0 评论 -
3438.数制转换(AcWing)
思路因为会有可能转化成的数值是超过十进制的,所以先声明一个char类型数组,然后到时候避免出现超过十进制的数字,直接输出对应的数组类型的数字AC代码#include<iostream>#include<string>#include<stack>#include<algorithm>using namespace std;char num[]={'0','1','2','3','4','5','6','7','8','9','A','B','.原创 2021-11-18 08:51:01 · 271 阅读 · 0 评论 -
二叉树遍历(递归和非递归、线索化、释放)
二叉树遍历自用模板二叉链表typedef struct node{ char data; node *lchild,*rchild;}*Tree;二叉树创建void build(Tree &T){ char data; scanf("%c",&data); if(data!='#') { T=(Tree)malloc(sizeof(node));//分配空间 T->data=data; build(T->lchild); build(原创 2021-11-10 19:10:34 · 521 阅读 · 0 评论