自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 N皇后问题

N 皇后问题源自国际象棋,所有棋子中权力最大的称为皇后,它可以直着走、横着走、斜着走(沿 45 度角),可以攻击移动途中遇到的任何棋子。N 皇后问题的具体内容是:如何将 N 个皇后摆放在 N*N 的棋盘中,使它们无法相互攻击。例如,将 4 个皇后摆放在 4*4 的棋盘中,下图给出了一种摆放方式,各个皇后无论是直着走、横着走还是斜着走,都无法相互攻击。代码如下:#include <stdio.h>#define N 20 //皇后的数量int q[N];

2022-05-26 20:45:06 479

原创 Huffman tree

什么是哈夫曼树?赫夫曼树,别名“哈夫曼树”、“最优树”以及“最优二叉树”。当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。重要概念路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的.

2022-05-26 20:24:03 87

原创 二叉树及其遍历

一、前序遍历void PreOrderRec(Btree* root){ if (root == NULL) { return; } printf("- %d -", root->data); PreOrderRec(root->lchild); PreOrderRec(root->rchild);}二、(借助栈)前序遍历void PreOrder(Btree* root){ Bnode cur; if (root == NULL) { r

2022-05-25 18:55:08 85

原创 数据结构学习笔记:二维数组和矩阵乘法

静态数组一、定义二维数组定义的一般形式如下:type arrayName [ x ][ y ];typedef struct TwoDStaticArrray{ int rows; int columns; int elements[ROWS][COLUMNS];} TwoDStaticArray, *TwoDStaticArrayPtr;二、初始化TwoDStaticArrayPtr initTwoDStaticArray(){ i...

2022-05-19 19:58:24 286

原创 数据结构学习笔记:链队列和循环队列

一、链式队列链式队列,简称"链队列",即使用链表实现的队列存储结构。链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头创建链式队列的 C 语言实现代码为://创建链队列结点 typedef struct LinkNode{ int data; LinkNode* next; }*LinkNodePtr; //链队列typedef struct LinkQueue{ LinkNodePtr front; //队头.

2022-05-16 23:08:16 473

原创 数据结构学习笔记:递归和汉诺塔问题

什么是递归在数据结构—树中,对于树的遍历采用的是递归来遍历的。递归就好比套娃,在满足条件的情况下会一直调用本身。问题的求解过程就是划分成许多相同性质的子问题的求解,而小问题的求解过程可以很容易的求出,这些子问题的解就构成里原问题的解了。流程图递归的优缺点递归使程序优雅。但是,如果性能至关重要,请使用循环代替,因为递归通常要慢得多。实例:使用递归函数计算一个给定的数的阶乘:#include <stdio.h> double factorial(unsigned

2022-05-12 16:18:25 253

原创 数据结构学习笔记:栈

part 1:对一序列的主要操作是在序列的末尾插入元素和取出元素,有这类操作要求的序列称之为“堆栈”。堆栈可认为是具有一定约束的线性表,插入和删除操作都作用在栈顶这一端点位置。由于堆栈是线性表,因而其栈的存储结构可以采用顺序和链式两种形式,分别成为顺序栈和链栈。当TOP指向-1时,表示空栈;当TOP指向MAXSIZE-1时,表示满栈。操作一:创建一个给定容量的空堆栈Stack CreateStack( int MaxSize){ Stack S = (Stack)mal

2022-05-10 20:23:00 116

原创 数据结构学习笔记:多项式加法

1.定义结构体typedef struct LinkNode { int coefficient;//系数 int exponent;//指数 struct LinkNode* next;}*LinkList,*NodePtr;2.初始化LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); tempHeader->coefficient = ..

2022-05-06 16:32:43 93 1

原创 数据结构学习笔记2:双向链表和静态链表

1. 双向链表的简介&概念双向链表可以简称为双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。双向链表示意图:一个完整的双向链表应该是头结点的pre指针指为空,尾结点的next指针指向空,其余结点前后相链。2. 双向链表的结点设计结点示意:DATA表示数据,其可以是简单的类型(如int,double等等),也可以是复杂的结构体(struct类型);p

2022-05-03 10:30:02 898

原创 数据结构学习笔记2:单链表

don't talk too much,here is the teacher's code:1. 单链表概念&设计单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。对于链表的每一个结点,我们使用结构体(struct)进行设计,其主要内...

2022-04-29 20:42:45 883

原创 数据结构学习日记DAY1:顺序表

顺序表,全名顺序存储结构,是线性表的一种。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。

2022-04-25 23:53:15 100

空空如也

空空如也

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

TA关注的人

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