自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构15:图的邻接表存储

图的邻接表存储及广度优先遍历

2022-06-01 10:26:12 837

原创 数据结构14:图的遍历

图1.定义图G是由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系,也就是边的集合。2.基本操作//定义图typedef struct Graph{ int** connections; int numNodes; } *GraphPtr; //初始化图GraphPtr initGraph(int paraSize,int** paraData){ int i,j; GraphPtr resultPtr

2022-05-30 18:00:24 141

原创 数据结构13:哈夫曼树及编码

哈夫曼树路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径结点的路径长度:两结点间路径上的分支数。树的路径长度:从树根到每一个结点的路径长度之和。结点树目相同的二叉树中,完全二叉树是路径长度最短的二叉树权:将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权1结点的带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘积树的带权路径长度:树中所有叶子节点的带权路径长度之和。哈夫曼编码在哈夫曼树的每个分支上标上0或1:结点的左分支标0,右分

2022-05-29 18:52:50 1201

原创 数据结构12:n后问题(回溯)

n后问题原理两个皇后不能放在同一列、同一行以及同一斜线上。代码paraSolution[i]表示第i个皇后放的列数,t表示行数#include <stdio.h>#include <malloc.h>#include <math.h>#include <stdbool.h> //判断是否能放bool place(int* paraSolution,int t){ int j; for(j = 1;j < t;j +

2022-05-25 20:20:32 86

原创 数据结构11:二叉树遍历

二叉树树是一种非线性数据结构,由n个结点组成的有层次关系的集合,而二叉树是树的一种,特点是最多只有两个子树。一个二叉树由三部分组成,根结点、左子树、右子树。二叉树的操作1.队列及相关操作(辅助实现二叉树)队列中存放二叉树结点//定义队列 typedef struct BTNodePtrQueue{ BTNodePtr* nodePtrs; int front; int rear;} BTNodePtrQueue, *QueuePtr;//队列初始化 QueuePt

2022-05-23 20:10:27 227 1

原创 数据结构10:压缩矩阵和转置

压缩矩阵压缩矩阵是将一个矩阵中值为0的各元素删除,只保留下不为0的一串数,每一个数都包含这个数处于原矩阵的行、列和数值三部分。基本操作1.定义//压缩矩阵的元素 typedef struct Triple{ int i; int j; elem e; } Triple, *TriplePtr; //压缩矩阵typedef struct CompressedMatrix{ int rows,columns,numElems; Triple* eleme

2022-05-19 11:18:15 261 1

原创 数据结构9:二维数组和矩阵相乘

二维数组 二维数组可以分为静态数组和动态数组,其中静态数组是提前分配好空间,而动态数组则是需要时再分配空间,在实际应用中大多利用动态数组,灵活度高,但在个别情况,静态数组会更加方便。静态数组1.定义typedef struct TwoDStaticArrray{ int rows; int columns; int elements[ROWS][COLUMNS];} TwoDStaticArray, *TwoDStaticArrayPtr;2.初始化Two...

2022-05-19 10:33:13 277

原创 数据结构8:队列和循环队列

链队列链队列是用一个线性链表来表示一个队列,队列中每一个元素对应链表中一个链结点,这样的队列简称链接队列。具体地说,把线性链表第1个链结点的指针定义为队头指针front,在链表最后的链结点建立指针rear作为队尾指针,并且限定只能在链头进行删除操作,在链尾进行插入操作,这个线性链表就构成了一个链接队列。另一个与顺序存储队列的不同点是,队头指针与队尾指针都是指向实际队头元素与队尾元素所在的链结点。基本操作1.定义(定义节点和队列,方便操作)//链队列节点typedef struct

2022-05-16 20:42:01 216

原创 数据结构7:递归累加及汉诺塔问题

累加问题:1.代码#include <stdio.h>//累加函数 int addTo(int n){ if(n <= 0) { return 0; } else { return addTo(n - 1) + n; }}//测试void addToText(){ int n; n = 6; printf("0加到%d等于%d\n",n,addTo(n)); n = 1; printf("0加到%d等于%d\n",n,add

2022-05-11 18:57:52 184 1

原创 数据结构6:栈及其应用

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

2022-05-09 20:33:50 142

原创 数据结构5:多项式加法

多项式加法多项式加法是对单链表的进一步应用,掌握了可以帮助我们更好地理解单链表。在我使用老师代码时,我更换了一组测试用例后发现运行结果是乱码,我就先检查了发现建立多项式和打印的函数没有问题。就进一步检查加法函数,就发现了跟踪新多项式的指针r并没有指向下一位(即缺少了r->next = q;或r->next = p;的操作),添加这一步后发现我的测试用例可以实现,至于为什么老师的代码在错误的情况下依旧可以实现特殊用例,还不太清楚。函数实现1.定义...

2022-05-05 10:36:16 1006 1

原创 数据结构4:静态链表

静态链表与单链表相同点:内部节点都由两部分组成,单链表(指针域和数据域),静态链表(游标和数据域),其中单链表的指针域和静态链表游标作用基本相同。不同点:静态链表是用数组(游标)实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配大小。动态链表是用申请内存函数(malloc函数)动态申请内存的,每个节点的物理地址不连续,要通过指针(指针域)来顺序访问。 静态链表图解与单链表基本相同,只是用数组形式替代了指针形式,插入删除操作过程类似静...

2022-05-03 14:35:20 730

原创 数据结构3:双向链表

双向链表定义双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。双向链表比单链表稍复杂, 也更不常用. 主要是为了练习链表的变种, 寻找更多设计的感觉. 这样在面对实际问题的时候, 就具有一定的建模能力。双向链表操作1.定义typedef struct DoubleLinkedNode{ char data; struct DoubleLinked...

2022-05-02 20:25:44 358

原创 数据结构2:单链表

关于单链表单链表是链式存储结构,其每一个元素的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。 单链表的操作1.创建链表typedef struct LinkNode{ char data; struct LinkNode*next; } LNode, *LinkList, *NodePtr;2.初始化LinkList initLinkList(){ NodePtr tempHeade...

2022-04-27 21:19:14 578

原创 数据结构1:线性表

1.关于线性表线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。 线性表的逻辑结构简单,便...

2022-04-25 19:16:42 366 1

空空如也

空空如也

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

TA关注的人

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