自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Thirteen Days 邻接表及广度优先遍历

定义:它就像是树的压缩版,如图:代码:节点:头(一个数组来存储每个节点,数组中每个单元是一个链表,这个链表存储每个节点相联的节点):图转邻接表: 广度遍历:在之前的代码就说了,这里就不说了,这里无非就是用邻接表遍历不用判断俩个节点之间是否相联,然后一个一个链表判断,因为一个链表中的数据就是该节点的相邻的节点。代码:

2022-06-01 03:01:37 130

原创 Thirteen Days 图及其遍历

图是是什么:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。(书上定义)代码:初始化:图长什么样:因该是这样:在计算机中: 显然在计算机中它是由二维数组表示的, 一个n*n的二维数组,其中n表示树中的节点个数,然后二维数组中1表述这俩个节点有关联。从第一张图中可以看出,图是有闭环存在的,所以在遍历的时候如果不标记已经遍历过的节点,就会导致下次到达这个节点时不知道你是否已经遍历了这个节点。所以需要

2022-06-01 02:38:31 103

原创 Twelve Day n皇后问题(回溯递归)

问题描述n皇后问题是一个以国际象棋为背景的问题:如何能够在 n*n的国际象棋棋盘上放置n个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上.总代码:#include <stdio.h>#include <malloc.h>#include <math.h>int cnt = 0;int place(int* paraSolution, int paraT){ int j; for .

2022-05-28 23:06:10 118

原创 Twelve Day 哈夫曼树(编码)

这里是使用哈夫曼树定义来给一组字符串的元素编码,从而理解哈夫曼树。定义理解:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。代码定义:就是一颗特别的二叉树://哈夫曼节点 typedef struct _htNode { char symbol; struct _htNode *left, *right;}htNode;

2022-05-28 22:45:44 187 2

原创 Eleven Day 初始二叉树(四种遍历)

定义:二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。

2022-05-23 20:25:10 542 1

原创 Ten days - 压缩数组

目录压缩数组的理解:压缩数组的实现:代码定义:初始化:普通数组转化成压缩:压缩转化为普通数组:压缩数组的转置:路思:总代码:---这次是压缩数组,其中有数组压缩、压缩数组还原、以及压缩数组的转置。压缩数组的理解:为什么需要压缩数组呢?为了节省空间如图:就是利用数组存储,有效数据所在位置压缩数组的实现:代码定义:typedef struct Triple {//用与记录 int i; int j; elem e; }Trip.

2022-05-20 19:37:10 609

原创 Ten Day 二维数组

目录定义二维数组:动态二维数组:静态二维数组:二维数组的乘积:关于地址:总代码:--这次是理解二维数组,二维数组可以定义成静态和动态,我们分别定义,另外实现二维数组的打印、乘积、随机生成二维数组、初始化,这些我们用动态二维数组实现,而静态其实是一样的,另外我们思考二维数组的地址。定义二维数组:动态二维数组:理解:一个二维数组指针(二级)指向一片空间,这片空间存储的是每行的指针地址,有几行就有几个指针,这些指针分别指向每行的首地址(如图)。代码:.

2022-05-20 18:10:58 105

原创 Nine Day 队列-链式和循环式

队列定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。链式:用链表定义队列,头节点进入,末节点出队,实现先进先出。图样:代码实现:1)定义队列这样俩个struct 有利于封装队列。typedef struct LinkNode { int data; struct LinkNode* next;}*

2022-05-16 09:52:26 248 1

原创 Eight Day 递归-汉诺塔

问题阐述:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到B杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。代码实现思路:将n-1个盘子从A借助B移动到C上;再将最后的盘子移动到B上;最后将C上的n-1个盘子借助A移动到B上

2022-05-12 13:10:04 407

原创 Eight Day 递归-累加

递归定义:若一个函数、过程或者数据结构定义内部又直接(或间接)出现定义本身的应用,称他们为递归。利用递归实现累加:图解:代码:#include <stdio.h>/** * Recursive addition. */int addTo(int paraN){//理解每次出栈的过程 int tempSum; printf("entering addTo (%d).\n", paraN); if (paraN <= 0) { printf(.

2022-05-12 11:19:07 152

原创 Seven Day栈的运用-表达式求值

主要功能:完成整数表达式求值 例如:1+(2*6)/2+9-1 = ?功能实现:思路:处理问题:1.运算符优先级2.数字与符号分开处理实现核心:栈代码:#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100 //顺序栈存储空间的初始分配址#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;

2022-05-10 20:35:39 267 2

原创 Six Day 栈-初识+括号匹配

什么是栈?(个人理解)栈的实现,使元素存放在一个地方,先进入的元素后出来,可以想成一个有一面底部的圆柱体,放入带有序号的小球(小球半径比圆柱体小一点,保证小球进入后不能相互交换位置), 这样先进入的小球要出来,就要等后进来的小球出去之后才行,形成了先进后出现象,这一特点可以用于实现计算机的返回操作。用链表和数组都能实现,这里用的数组。栈的实现创建栈:说明:top 表示栈顶代码:typedef struct CharStack { int top; int data[STAC

2022-05-10 20:23:37 271

原创 Five Day 多项式的加法

功能介绍:将俩个一元多项式相加, 好了就这些。图解:1).2).3).闵版代码#include <stdio.h>#include <malloc.h>/** * Linked list of integers. The key is data. The key is sorted in non-descending order. */typedef struct LinkNode{ int cofficient; in.

2022-05-05 18:26:46 626

原创 Four Day 静态链表

1)定义(个人理解)一种将多个数据元素有序存储的数据结构,其存储空间是连续的且大小定义后是无法改变的。(如图所示)之所以叫静态,因为它和顺序表一样,一开始就确定了分配的存储空间大小。2)功能实现1.节点创建代码实现2.链表创建代码实现3.链表初始化代码实现4.指定位置添加节点代码实现代码运行图解测试代码5.删除节点代码实现代码运行图解测试代码6.查找(返回key)代码实现代码测试3)总结(关于连续、链表、静态三种存储方式的总

2022-05-03 14:52:56 462

原创 Three Day 双链表

1)定义(个人理解)在单链表的基础上,在每个节点增加一个指针,用于指向其前驱的数据存储结构。图形模样:2)功能实现定义双链表代码实现初始化代码实现指定位置插入数据图解代码实现测试代码删除指定数据图解代码实现测试代码查找数据位置(返回指针)代码实现测试代码打印地址代码实现打印结果个人思考3)总结...

2022-05-02 17:57:21 340 1

原创 Two Day 单链表

1)定义理解(自我乱说)定义:单向的连接的数据存储结构。特点:由多个节点通过指针连接而成;只有一个方向;(如图所示)每个节点分为俩个部分,及数据域和指针域;(如图所示)数据域:存储数据,比如放一个或多个整数类型,放一个或多个不同类型数据都行(这里代码演示只放一个int类型,为了方便)。 指针域:存放一个指针,用于指向下一个节点,我愿称它为单链表的脊髓。 地址存储特点:一个节点的数据域和指针域是存储在一个连续的空间上的,一个单链表的不同节点的空间是随机分配的,一般不是连..

2022-04-29 17:54:14 723 2

原创 One Day - 顺序表

顺序表处理:1.定义顺序表代码实现:typedef struct SequentialList{ int actualLength; int data[LIST_MAX_LENGTH];//The maximum length is fixed.} *SequentialListPtr;2.按顺序输出顺序表代码实现:void outputList(SequentialListPtr paraList){ if(paraList->actualLength ==

2022-04-25 21:55:57 421 2

空空如也

空空如也

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

TA关注的人

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