自定义博客皮肤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)
  • 收藏
  • 关注

原创 图的遍历.

2022-05-31 21:38:46 118

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

2022-05-31 21:37:22 821

原创 哈夫曼树。。

1. 哈夫曼树1.1 基本概念路径:指从根结点到该结点的分支序列。路径长度:指根结点到该结点所经过的分支数目。结点的带权路径长度:从树根到某一结点的路径长度与该结点的权的乘积。树的带权路径长度(WPL):树中从根到所有叶子结点的各个带权路径长度之和。哈夫曼树是由 n 个带权叶子结点构成的所有二叉树中带权路径长度最短的二叉树,又称最优二叉树。如上图中第三棵树就是一棵哈夫曼树。1.2 构造哈夫曼树构造哈夫曼树的算法步骤:① 初始化:用给定的 n 个权值{w1,w2,…,wn}构造 .

2022-05-29 18:07:25 165

原创 N皇后问题

解决N皇后问题用到了回溯算法。回溯算法是一种试探算法。每一步都有多种尝试的可能性,是递归算法的变式,递归和回溯的区别我认为在于,在归的途中做的事情不一样,递归的每一次归都是确切的答案,而回溯的话,在归的时候。每一步都可能有多种尝试的可能。因为一个结点不成立,其子节点就不必再进行尝试,所以节约了很多空姐和时间思考N皇后问题时,我们引入了一个二维平面,所以我想写程序的时候应该也要使用一个二维数组才能实现,但是程序只用了一个一维数组就实现了。我认为N皇后问题的难处一个是回溯的实现,另一个是判断当前位置

2022-05-27 14:44:04 100

原创 二叉树构建与遍历

二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。一.构建二叉树在构建二叉树的过程,同时运用了栈和队列,用栈的目的是存储二叉树的结点,队列的主要目的我认为是方便找到结点的左子树和右子数。1.二叉树的结点typedef struct BTNode{ char element; BTNod...

2022-05-23 21:08:10 138

原创 压缩矩阵的转置

一.压缩矩阵对稀疏矩阵进行压缩存储目的是节省存储空间。 存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。 但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。压缩的原理:忽略矩阵中值为0的元素,只记录不为0的元素,记录方式为:行,列,元素。二.矩阵的转置:原理:将矩阵中元素的行列互换。对于压缩矩阵:将矩阵的行数和列数互换:将三元组

2022-05-19 20:50:38 138

原创 二维数组与矩阵乘法

1.二维数组的结构体//动态内存 typedef struct TwoDArray{ int rows; int columns; int** elements;} TwoDArray, *TwoDArrayPtr; //静态内存 typedef struct TwoDStaticArray{ int rows; int columns; int elements[ROWS][COLUMNS];} TwoDStaticArray, *TwoDStaticArrayPtr;..

2022-05-19 18:43:13 215

原创 队列(链式队列和循环队列)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头一.链式队列链式队列则为单链表方式存储,输入队时从堆中动态申请及释放内存,可避免预置空间造成资源浪费及空间不够造成的队满溢出,但是需要多余的指针域空间。出入队即为单链表节点的插入删除操作,需注意数据取出的方式及时机。在我看来链式队列就是在一个单链表的基础上,多加了一个一个结构体指针用来表示

2022-05-17 14:00:39 975

原创 数据结构——递归(累加,汉诺塔问题)

程序调用自身的编程技巧称为递归。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。一.累加#include <std

2022-05-12 13:08:54 152

原创 表达式求值

一.1.#include <cstring>函数的头文件之下包含有很多实用的字符串函数,(1)strcat(str1,str2),实现两个字符串的相加,并且将相加的结果储存在str1之中,所以要确保str1的长度足够大,使得数组不会越界(2)strcmp(str1,str2),比较两个字符串是否相等,一般用strcmp()返回值为0则表示相等,而stricmp()是忽略字母大小写的比较,否则还有一种方法就是用循环来比较。2.#include<algorithm>:

2022-05-10 19:59:56 910

原创 栈和括号匹配

栈又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。一.栈的基本操作1.定义结点typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; } *CharS

2022-05-10 19:34:05 99

原创 多项式的加法

写在前面:在我看来多项式的加法与前面学的单链表唯一的区别就是添加了合并两个单链表这一步,合并的过程中设置了三个变量,p,q,r,其中p,q分别代表了两个链表要比较的结点,r代表新链表的尾部,在一轮循环最后r->next指向新加入的结点,r的地址变新加入结点的地址,继续充当链表尾部。 比较指数时存在三种情况,总的规律是新链表优先合并指数较小的结点,当两个结点指数相同时,先合并,再链接,并释放空闲的空间。另外,当链表1或2剩下多个结点时源代码貌似并不能保证剩下的结点全部接入到新链表后,所以对这部.

2022-05-05 13:45:49 731

原创 静态链表。

在静态链表中,每一个结点包含两部分内容,一部分是data(即有意义的数据),另一部分是cur(存储该元素下一个元素所在数组对应的下标)。有几个特殊的结点:首先是下标为0的结点中不包含有意义的数据,它的cur存储的是备用链表(即没有存储的数据的那些结点)第一个结点的下标。最后就是链表的最后一个元素(并不一定是数组的最后一个元素),链表最后一个元素的cur一般存放-1,表示它后面的结点为空了。1.创建结点typedef struct StaticLinkedNode{ char data

2022-05-03 15:42:03 574

原创 双向链表.

一.结构typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode *previous; struct DoubleLinkedNode *next;}DLNode,*DLNodePtr;有两个指针域,一个指向后继,一个指向前驱。二.包含的函数1.创建头结点DLNodePtr initLinkList(){ DLNodePtr tempHeader =(DLNodePtr)malloc

2022-05-03 11:58:01 435

原创 单链表..

老师的代码(有修改)一.1. 创建节点typedef struct LinkNode{ char data; struct LinkNode *next;}LNode,*LinkList,*NodePtr;2.尾部插入数据//尾部插入数据 void appendElement(NodePtr paraHeader,char paraChar){ NodePtr p,q; q=(NodePtr)malloc(sizeof(LNode)); q->data =.

2022-04-29 09:34:53 71

原创 顺序表...

一.老师的代码#include <stdio.h>#include <malloc.h>#define LIST_MAX_LENGTH 10/** * Linear list of integers. The key is data. */typedef struct SequentialList { int actualLength; int data[LIST_MAX_LENGTH]; //The maximum length is fix

2022-04-25 22:18:21 191

空空如也

空空如也

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

TA关注的人

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