- 博客(17)
- 收藏
- 关注
原创 数据结构-图遍历
图遍历,别称是图的遍历,是一个数理学术语,是指数据结构中的内容。指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次
2022-06-05 15:20:51 180
原创 数据结构-邻接表
邻接表,存储方法跟树的孩子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。如这个表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。...
2022-06-05 15:16:11 452
原创 数据结构-N 后问题
假设有一N×N的棋盘和N个皇后,请为这N个皇后进行布局使得这N个皇后任意两个皇后不在同一行,同一列,同一对角线,求各种可能的情况#include <stdio.h>#include <malloc.h>#include <math.h>bool place(int* paraSolution, int paraT){ int j; for (j = 1; j < paraT; j ++){ if ((abs(paraT - j
2022-05-29 22:31:53 110
原创 数据结构-哈夫曼树
对于给定的有各自权值的 n 个结点,构建哈夫曼树有一个行之有效的办法:1、在 n 个权值中选出两个最小的权值,对应的两个结点组成一个新的二叉树,且新二叉树的根结点的权值为左右孩子权值的和;2、在原有的 n 个权值中删除那两个最小的权值,同时将新的权值加入到 n–2 个权值的行列中,以此类推;3、重复 1 和 2 ,直到所以的结点构建成了一棵二叉树为止,这棵树就是哈夫曼树#include <iostream>#include <fstream>#includ.
2022-05-29 22:23:20 194
原创 数据结构-二叉树
二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分 。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点1、创建节点typedef struct BTNod
2022-05-24 19:50:21 70
原创 二维数组与矩阵乘法及压缩矩阵的转置
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。一、二维数组与矩阵乘法1、创建矩阵typedef struct TwoDArray{ int rows; int columns; int**elements;}TwoDArray,*TwoDArrayPtr;typedef struct TwoDStaticArray{ int rows; int columns; int
2022-05-20 12:25:56 182
原创 数据结构-链队列和循环队列
一、链队列需要创建两个指针分别指向队头和队尾,删除元素只能在队头进行,当然添加元素也只能在队尾进行1.链队列的节点typedef struct LinkNode{ int data; LinkNode*next;}*LinkNodePtr;2.链队列typedef struct LinkQueue{ LinkNodePtr front; LinkNodePtr rear;}*LinkQueuePtr;3.创建头节点头指针和尾指针指向头节点LinkQueueP
2022-05-17 17:50:09 1691
原创 数据结构-汉诺塔
汉诺塔又称河内塔问题是源于印度一个古老传说的益智玩具,创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘,把圆盘从下面开始按大小顺序重新摆放在另一根柱子上,并且规定在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。对ABC三柱第一步是把前n-1个从A移到B,最后一次是把n移到C,第二步是把n-1个从B移到C,最后一次是把第1个移到C也就是终结条件A->CA->BC->BA->CB->...
2022-05-12 16:34:31 1055
原创 数据结构-累加递归
递归在于把问题分解成规模更小、具有与原来问题相同解法的问题,从1加到5,分解为从1加到4再加上5,1加到4又可以分解为从1加到3再加上4,以此类推,再逐层解决得到答案详细代码int addTo(int paraN){ int tempSum; printf("entering addTo(%d)\r\n",paraN); if(paraN <= 0){ printf("return 0\r\n"); return 0; }else{ tempSum = addTo(par
2022-05-12 15:20:07 277
原创 数据结构-表达式求值
膜拜大佬的代码//202031061018 刘知鑫#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <unordered_map>using namespace std;stack<int> num;stack<char> op;void eval(){ auto b =
2022-05-10 21:34:57 186
原创 栈及栈的应用-括号匹配
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。1.创建一个栈top为栈顶typedef struct CharStack { int top; int data[STACK_MAX_SIZE];} *Ch
2022-05-10 21:19:35 390
原创 数据结构-多项式的加法
1.创建链表typedef struct LinkNode{ int cofficient; int exponent; struct LinkNode *next;}*LinkList,*NodePtr;2.初始化LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); tempHeader->cofficient = 0; tempHeader-&
2022-05-06 18:33:18 295
原创 数据结构-静态链表
静态链表的定义 逻辑结构上相邻的数据元素,存储在指定的一块内存空间中,数据元素只允许在这块内存空间中随机存放,这样的存储结构生成的链表称为静态链表。也就是说静态链表是用数组来实现链式存储结构,目的是方便在不设指针类型的高级程序设计语言中使用链式结构。它的优点是和动态链表一样,删除和插入元素时间复杂度低;不足是和数组一样,需要提前分配一块较大的空间。1.创建结构体typedef struct StaticLinkedNode{ char data; int next;}*NodePtr;
2022-05-03 19:50:01 663 1
原创 数据结构-双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点...
2022-05-03 14:35:29 10881 2
原创 数据结构-单链表
单链表是一种链式存取的数据结构,用一组地址任意的储存单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素储存位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。1.创建一个单链表typedef struct LinkNode{ char data; struct LinkNode*next;}LNode,*LinkList,*NodePtr;2.头节点LinkList initLinkList(){
2022-04-29 13:46:18 745
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人