- 博客(19)
- 收藏
- 关注
原创 邻接表的认知
邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。对于无向图来说,使用邻接表进行存储也会出现数据冗余,表头结点A所指链表中存在一个指向C的表结点的同时,表头结点C所指链表也会存在一个指向A的表结点。图的邻接表存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。...
2022-05-31 14:09:10
322
1
原创 图的遍历的认知
这里面加一个continue的理解,continue是退出这一个循环,break是退出整个循环。break表示结束整个循环(break所在的最近的那个循环)continue表示结束本次循环(continue所在的最近的那个循环)#include <stdio.h>#include <malloc.h>#define QUEUE_SIZE 10int* visitedPtr;typedef struct GraphNodeQueue{ //图的队列 int.
2022-05-30 21:02:46
160
1
原创 哈夫曼树的理解
给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈夫曼树也就是小树合成大树的故事,这里我直接用数组来造树了;这次代码多亏某位大佬的指点,写的如此简洁明了,能说的我都说在代码里了;#include <bits/stdc++.h>#define Kurumi int#define isMyFaith mainusing n.
2022-05-27 12:15:06
277
1
原创 n皇后问题 C++
先上代码!#include<iostream>using namespace std;const int N = 20;int n;bool row[N],col[N], dg[N], udg[N];char g[N][N];void dfs(int x, int y, int z){ if (y == n) y = 0, x++; //判断y是否已经抵达边界,抵达后,x+1进行下一行 if (x == n) { if (z =
2022-05-26 11:01:31
1816
1
原创 二叉树的认知
直接上代码吧,改了好长一段时间,重点在写那个二叉树的非递归遍历,就写了一个中序的(太麻烦了),层序遍历需要队列,中序遍历竟然需要栈,属实蚌埠住了。中序非递归遍历:void inorder(BiTNode *t)//中序遍历的非递归算法{ BiTNode *temp = t; while(temp != NULL||S.top != 0) { while(temp != NULL)//先把左孩子入栈,所有左孩子入栈结束 { Push(temp); temp = te.
2022-05-23 17:39:16
254
1
原创 压缩矩阵的转置
毕竟要转置,就是x成y,y成x,所以要先看y为0的值,然后传给下一个的x,这样才能把数据排好序。压缩矩阵初始化:CompressedMatrixPtr initCompressedMatrix(int paraRows, int paraColumns, int paraElements, int** paraData){ //压缩矩阵初始化嗷 int i; CompressedMatrixPtr resultPtr = (CompressedMatrixPtr)malloc(size..
2022-05-19 13:12:18
216
1
原创 二维数组和矩阵乘法
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义 [1] 。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。根据这个图就很容易理解矩阵相乘了;接下来是代码(一些对代码的理解也在代码的注释上:#include <stdio.h>#include &l...
2022-05-18 14:52:20
967
1
原创 循环队列的认知
直接上代码了,实在没啥好说的;#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0typedef int Status;typedef struct { int *base; int front; //队头 int rear; //队尾}SqQueue;void InitQ(SqQueue &Q,int N);void AddQ(SqQueue &
2022-05-16 20:49:38
189
2
原创 链队的理解
直接上代码!#include<iostream>using namespace std;#define isMyFaith main#define OK 1#define ERROR 0typedef int Status;typedef char QElemType;typedef int Kurumi;typedef struct QNode { QElemType data; struct QNode *next;} QNode, *QueueP.
2022-05-16 19:29:14
114
原创 递归(汉诺塔和递归求和)
程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。1.递归求和:全代
2022-05-12 13:28:27
720
原创 用栈实现表达式求值
再认真研究了刘学长的代码后,不禁特别崇拜这个学长的思路,我之前就遇到这个表达式求值的问题,当时无论自己去想,还是上网搜索资料,都发现很难(要么想法很难,要么代码贼长);首先解释一下代码里面蕴含的一些知识点罢:1)unordered_mapunordered_map是一种关联容器,存储基于键值和映射组成的元素,即key-value。允许基于键快速查找元素。在unordered_map中,键值唯一标识元素,映射的值是一个与该对象关联的内容的对象。(这是搜到的)代码里面这个就是相当于给 + - *
2022-05-10 13:07:54
229
原创 栈的理解认知(包含括号是否匹配的判断)
栈(Stack)是一个特殊的线性表,是限定仅在一端进行插入喝删除操作的线性表。先进后出,后进先出。下面就是我写的栈,里面也包含栈的最基础用法:判断括号是否匹配。#include<stdio.h>#include <stdlib.h>#include<string.h>#define MAXSIZE 10#define isMyFaith main#define TURE 1#define FALSE 0#define OK 1#def.
2022-05-09 17:00:45
249
原创 多项式相加
多项式相加就是对链表的更深的运用,需要有系数,还要有指数。1)创建typedef struct LinkNode{ //多项式的创建 int coefficient; int exp; struct LinkNode *next;}*LinkList, LinkNode;2)初始化哈LinkList initLinkList(){ //链表的初始化 LinkList tempH = (LinkList)malloc(sizeof(LinkNode)); tempH
2022-05-05 10:48:48
145
原创 静态链表的认知
所谓静态链表,就是用数组描述的链表,在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域和游标。1.静态链表的定义typedef struct SLinkedNode{ //静态链表的定义 int data; //数据 int next; //指针 } *NPtr, LNode;typedef struct SLinkList{ //套娃啊啊啊 NPtr nodes; int* used;}*LPtr; 2.静态链表的初始化LPtr init
2022-05-02 18:05:15
459
2
原创 双向链表认知
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。1.创建双链表typedef struct DuLnode{ //双向链表 int data; struct DuLnode *prior, *next; //一个前驱,一个后继 }DuLnode, *DuLinkList; 2.双链表初始化DuLinkList
2022-05-02 12:56:30
1113
1
原创 从零开始学背包系统02[Unity].数据库存储方法(ScriptableObject)
目前我了解到的ScriptableObject的作用应该是可以把数据真正存储在了资源文件中,可以像其他资源那样管理它,就算你退出了程序,里面的数据也不会归零之类的。言简意赅的说,这玩意可以保存你修改过的数据。下面让我来详细说明一下如何运用这东西:首先,我们在uinty里面,可以先创建一个项目脚本,名字就叫Item吧,第一步,把Item:后面的 MonoBehaviour改为ScriptableObject;public class Item : MonoBehaviour/*改为下面
2022-04-29 12:27:08
2985
2
原创 单链表的认知
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。单链表的操作也比较简单:1)链表的初始化LinkList initLinkList(){ //链表的初始化 LinkList H = (LNode*)malloc(sizeof(LNode)); //这叫分配内存 H->data = '.
2022-04-27 20:18:19
894
6
原创 线性表的认知
1.代码部分#include<stdio.h>#include<malloc.h>#define MAXSIZE 100#define isMyFaith main//夹带私货 typedef int Kurumi; //夹带私货 typedef struct Line{ int data[MAXSIZE]; int LineLength;} *LinePtr;void outputList(LinePtr L) { //打印这个线性表
2022-04-25 13:10:16
2267
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人