自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 13 邻接矩阵

若E是无向边(简称边)的有限集合时,则图G为无向图。边是顶点的无序对,记为(v, w)或(w,v),因为(v,w)=(w,v), 其中v,w是顶点。可以说顶点w和顶点v互为邻接点。边(v, w)依附于顶点w和v,或者说边(v, w)和顶点v, w相关联. 简单图:不存在重复边,不存在顶点到自身的边多重图:某两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联 路径:顶点到顶点之间的一条路径,路径是指顶点序列 简单路径:在路径序列中,顶点不重复出现的路径回路:第一个顶点和最后一个顶点相同

2022-06-10 15:03:23 148 1

原创 12 哈夫曼树

一、概述对于给定的有各自权值的 n 个结点,构建哈夫曼树有一个行之有效的办法:1、在 n 个权值中选出两个最小的权值,对应的两个结点组成一个新的二叉树,且新二叉树的根结点的权值为左右孩子权值的和;2、在原有的 n 个权值中删除那两个最小的权值,同时将新的权值加入到 n–2 个权值的行列中,以此类推;3、重复 1 和 2 ,直到所以的结点构建成了一棵二叉树为止,这棵树就是哈夫曼树二、代码#include <iostream>#include <fstream&.

2022-05-30 17:25:14 166

原创 11 N皇后问题

一、问题概述有一个n*n的棋盘,在这个棋盘中放n个皇后,使得这n个皇后,任意两个皇后不在同一行,同一列,同一条对角线。例如,当n等于4时,有两种摆法。二、思路讲解随着计算机的普及和发展,以前人们无法解决的问题,计算机可以简单计算出来。而且思路十分清晰,那就是暴力求解,遍历所有情况,然后计算出解的个数。按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法三、代码...

2022-05-26 15:51:53 280

原创 10 二叉树的创建和遍历

一、概念在计算机科学中,树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为节点)按分支关系组织起来的结构。二叉树(Binary Tree)是每个节点最多有两个子树的有序树。通常子树被称作"左子树"(left subtree)和"右子树"(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。值得注意的是,二叉树不是树的特殊情形。在图论中,二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根节点的度不大于2。有了根节点后,每个顶点定义了唯一...

2022-05-26 15:35:27 148

原创 9 二维数组&矩阵乘&稀疏矩阵的快速转置

一、二维数组老师讲二维数组其实核心是说明了C语言定义多维数组的一些特点。1.在栈里面直接定义一个数组,无论是多少维,都是一维的,在内存空间中都是连续的。2.在栈里面定义一个二维数组,在C语言中是行优先,所以在内存中先排行,对于科学计算经典语言Fortran,是列优先。3.在堆中使用malloc申请空间,一维数组很简单。但是多维数组其实是有问题的。行与行之间是不连续的。如果想要得到全部连续的内存,这个还需要另外再去对一位申请出来的一级指针进行操作。二、矩阵乘矩阵是个好东西啊。几乎可以说

2022-05-19 14:29:43 165

原创 8 链队列&循环队列

目录一 、链队列二 、循环队列三、总结&反思一 、链队列队列是相对于栈来说的一种数据结构,是一种先进先出的方式。类似于我们正常的排队,队列的实现方式同样有顺序式和链式。这里我们展示一下链式的代码#include <stdio.h>#include <stdlib.h>//链表中的节点结构typedef struct QNode{ int data; struct QNode *next;} QNode;//...

2022-05-17 15:27:35 258 1

原创 7 累加&汉诺塔的递归实现

目录一 概述二 代码2.1 累加代码2.2 汉诺塔代码三 总结&反思一 概述递归是一种很适合计算机的实现方式,在计算机内部是使用栈来实现的,递归的优点是空间复杂性比价低,代码短。但是也有一定的缺点,就是并不是那么高效(时间上),以及并不适合并行化,汉诺塔还是很有意思的一个代码(虽然我一直在被他摧残)二 代码2.1 累加代码#include<stdio.h>#include<stdlib.h>//累加的递归形式int a

2022-05-11 21:22:06 68

原创 6 表达式求值

目录一、概述二、代码2.1 访问栈顶函数2.2 符号优先级判断2.3 符号优先级判断2.4 操作符栈与数据栈的计算2.5 核心计算2.6 测试样例2.7 测试结果三、总结&反思一、概述比较难的一个点,之前看CSAPP的时候里面有提到中缀表达式和后缀表达式。当时看的时候就没有明白,今天结合老师的代码仔细地顺一下这个思路。二、代码一些栈的基本操作就不再赘述,讲几个核心函数2.1 访问栈顶函数/*访问栈顶元素*/...

2022-05-10 16:55:07 161

原创 5 基本数据结构:栈及应用(括号匹配)

一 概述和线性表相比,栈也存在两种储存结构,一种是顺序储存,一种是链式储存。各自的优缺点和顺序表与链表一致。栈的特点是先进后出。这种数据结构相较于一般的顺序表来说,实现了一些简化,同时在功能上存在一定的限制,但是对于特定环境的问题解决具有奇效。二 代码2.1 结构体&&宏定义#include <stdio.h>#include <stdlib.h>#define MAX 5#define OK 1#de...

2022-05-09 19:26:17 589

原创 4.多项式加法

一 概述多项式加法是链表的一个应用,其中核心的难点是判断指数不一样时候的处理,昨天也认真地看了群里面地讨论,老师的那种写法确实存在样例通过的侥幸,然后我选择果断抛弃老师的代码(不是),从自己的理解出发写了Add的核心函数。先从宏观里理解以下Add中存在的几种情况:第一种情况 这种情况,只需要把p的指针向后移一位,同时把p的前驱m的指针也想后移动一位,举图上的这个例子,我们可以发现1<4 所以只需要在q保持不...

2022-05-06 11:16:43 315

原创 3.双向链表&静态链表

一 双向链表1.1 双向链表概述双向链表就是在单链表的基础上,在定义结构体的时候做了一些手脚,在单链表中结构体的内容为数据以及指向下一个结点的指针,在双向链表中,增加了指向前一个结点元素的指针,即实现了对指定元素前驱和后继的查询。代价就是增加了1/3的空间储存。 内存分配图如下:1.2 双向链表的优势 双向链表实现了一个十分重要的功能是自我删除。即:p->previous->next=p->ne...

2022-05-03 15:13:29 960 2

原创 C语言 以字符串的长度为衡量标准进行排序

最近遇到了一个比较综合的题目是这样的,先描述一下题目,首先输入一个数字N,代表着下面将会有N个字符串的输入注意:N不会超过10,每个字符串的长度不会超过20我们要编写一个程序,实现对这N个字符串的升序,并输出。```#include <stdio.h>#include <string.h>int main(){ char ch[10][21]; /*对比一维字符串数组,比如说,定义 char x[150] 后面用x来表示整个字符串就可以了 ...

2021-11-23 17:00:51 1404

原创 C语言 getchar()相关知识以及缓冲区

在输入字符串的时候,我们经常会用到 getchar()这个函数。比如下面这个经典的用法:int main() { int ch; while ((ch = getchar()) != EOF) { putchar(ch); } return 0;}第一行输入:ccc (换行)第二行输出:ccc并且光标会出现在第三行。接下来,我们用比较通俗的语言来解释一下这个过程计算机内部发生了什么。当我们从键盘输入字符的时候,字符在一个名叫做缓冲区的地方暂时存起来,这个时候还没有

2021-10-21 19:14:43 525

原创 C语言 实现十进制转二十六进制

比如说给出一个十进制数字,如何将他转为以字母为形式的二十六进制呢?这里提供两个思路方法方法一:以字母为单位结合光标前移操作#include <stdio.h>#include <math.h>int main() { //创建26进制数组,把二十六个字母储存在一个诉诸中 char n[27]; int i; for (i = 1; i < 27; i++) { n[i] = 'A' + i - 1; }//这里是利用ASCII码把字母全部储存

2021-10-21 17:43:06 1362

原创 c语言 固定输出几位数时候 需要补0的情况处理

贴个原题本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。输入格式:输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。输出格式:在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。输入样例:1201 1530结尾无空行复制代码输出样例:03:29复制代码这里想说的是如果我们最后

2021-10-21 17:40:32 2365

原创 C语言 求一个整数的因子之和

逻辑结构:一个整数可以表示成连个因子的乘积,其中的偏小因数一定要比这个整数的平方根要小。 、 物理结构:可以先循环得到一对因子中相对小的那一个因子,利用两个因子相乘等于整数来得到另外的一个因子。代码实现:#include<stdio.h>#include<math.h> int main(){int number; scanf("%d",&number);//number就是需要计算的数字int sum= 1;//后面我们会计算除1之外数字的因子,但是1

2021-10-21 17:36:48 14822 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除