- 博客(18)
- 收藏
- 关注
原创 数据结构学习——n皇后问题
文章目录前言——n皇后问题一、实际操作1.判断2.回溯3.标记序号二、完整代码三、测试结果前言——n皇后问题N 皇后问题源自国际象棋,所有棋子中权力最大的称为皇后,它可以直着走、横着走、斜着走(沿 45 度角),可以攻击移动途中遇到的任何棋子。N 皇后问题的具体内容是:如何将 N 个皇后摆放在 N*N 的棋盘中,使它们无法相互攻击。一、实际操作1.判断bool place(int* paraSolution, int paraT){ int j; for (j = 1; j <
2022-05-29 20:00:00 422
原创 数据结构学习——哈夫曼树
文章目录前言——哈夫曼树一、实际操作1.定义结构2.找最小两节点3.构建哈夫曼树4.生成哈夫曼树二、完整代码三、测试结果前言——哈夫曼树在计算机数据处理中,哈夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。一、实际操作1.定义结构typedef double DataType; //结
2022-05-29 19:49:57 399
原创 数据结构学习——二叉树的构建与遍历
文章目录前言——二叉树一、实际操作1.建立二叉树2.初始化3.判断4.入队5.出队6.构造节点7.转化8.层序遍历9.先序10.中序11.后序12.测试二、完整代码三、测试结果前言——二叉树二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。一、实际操作1.建立二叉树typedef s
2022-05-24 22:24:52 537
原创 数据结构学习——压缩矩阵的转置
文章目录前言——矩阵转置一、实际操作1.构建2.初始化3.打印4.压缩5.测试二、完整代码三、测试结果前言——矩阵转置设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:把m×n矩阵A的行换成同序数的列得到一个n×m矩阵,此矩阵叫做A的转置矩阵.一、实际操作1.构建typedef struct Triple{ int i; int j; elem e;} Triple, *TriplePtr;2.初始化typedef struct Co
2022-05-19 23:42:21 152
原创 数据结构学习——二维数组与矩阵乘法
文章目录前言——矩阵乘法一、实际操作1.构建第一个矩阵2.构建第二个矩阵3.初始化矩阵4.分配元素到矩阵5.打印6.乘积7.测试二、完整代码三、测试结果前言——矩阵乘法一、实际操作1.构建第一个矩阵typedef struct TwoDArray{ int rows; int columns; int** elements;} TwoDArray, *TwoDArrayPtr;2.构建第二个矩阵typedef struct TwoDStaticArray{ int rows;
2022-05-19 23:16:45 100
原创 数据结构学习——队列(链队列、循环队列)
文章目录前言——队列一、链队列1.构建结构体2.创建一个队列3.跳出队列4.进入队列5.出队列6.样例测试7.完整代码8.结果二、循环队列1.构造结构体2.创造循环队列3.进入队列4.出队列5.测试6.完整代码7.测试结果前言——队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。一、链队列1.构建结构体typedef struct
2022-05-17 14:44:49 1063
原创 数据结构学习——汉诺塔问题
文章目录前言——汉诺塔问题一、实际操作完整代码二、测试1.输入数字2.测试结果前言——汉诺塔问题汉诺塔问题,是心理学实验研究常用的任务之一。该问题的主要材料包括三根高度相同的柱子和一些大小及颜色不同的圆盘,三根柱子分别为起始柱A、辅助柱B及目标柱C。一、实际操作完整代码#include <stdio.h>int i=1;void hanoi(int paraNumber , char paraSource , char paraDestination , char paraT
2022-05-12 17:27:50 730
原创 数据结构学习——递归:累加
文章目录前言——递归一、实际操作完整代码测试1.输入数字2.过程及结果前言——递归程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回
2022-05-12 16:50:36 405
原创 数据结构学习——表达式求值
临摹学长代码//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:45:29 288
原创 数据结构学习——栈的应用(括号匹配)
文章目录一、实际操作1.定义2.输出3.初始化4.进栈5.出栈6.括号匹配7.测试完整代码测试结果一、实际操作1.定义typedef enum bool{ false=0,true=1,}bool;typedef struct CharStack { int top; int data[MAX]; } *CharStackPtr;2.输出void outputStack(CharStackPtr paraStack) { int i; for (i
2022-05-10 20:55:06 81
原创 数据结构——栈
文章目录前言——栈一、实际操作1.定义2.输出元素3.初始化4.进栈5.出栈6.测试完整代码测试结果前言——栈栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。一、实际操作1.定义typedef struct CharStack
2022-05-10 20:12:15 85
原创 数据结构学习——多项式的加法
文章目录一、实际操作1.定义链表2.初始化3.打印4.节点打印5.添加元素6.相加二、单元测试1.测试一2。测试二三、完整代码四、结果一、实际操作1.定义链表typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} *LinkList, *NodePtr;2.初始化LinkList initLinkList(){ LinkList tempHeader = (LinkList)m
2022-05-06 19:47:27 687 1
原创 数据结构学习——静态链表
文章目录前言——静态链表含义一、静态链表结构(图解)二、静态链表实际操作1、结构2、创建节点3、打印4、插入5、删除6、测试三、完整代码四、测试结果前言——静态链表含义对于线性链表,也可用一维数组来进行描述。这种描述方法便于在没有指针类型的高级程序设计语言中使用链表结构。一、静态链表结构(图解)二、静态链表实际操作1、结构typedef struct StaticLinkedNode{ char data; int next;} *NodePtr;typedef struct St
2022-05-03 19:08:31 908
原创 数据结构学习——双向链表
文章目录前言——双向链表含义一、双向链表结构(图解)二、 双向链表的实际操作1、 结构2、创建头结点3、打印4、插入5、定位6、删除完整代码运行结果前言——双向链表含义双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。一、双向链表结构(图解)二、 双向链表的实际操作1、 结构/** * Double linked list of integ
2022-05-03 18:44:09 5356 1
原创 数据结构学习第二天——单链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言——单链表的定义一、单链表的逻辑结构示意图二、单链表的实际操作1.定义单链表2.创建单链表3.打印单链表4.插入5.指定位置插入6.删除指定元素完整代码测试结果前言——单链表的定义单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。.
2022-04-29 17:29:17 1066
原创 数据结构学习第一天——顺序表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录操作步骤函数声明1。创建线性表2.打印线性表3.打印数据地址4.初始化线性表插入数据(开始)6.插入数据(结束)7.删除数据8.测试删除操作9.完整代码`提示:以下是本篇文章正文内容,下面案例可供参考操作步骤函数声明void outputList(Sqlist paraList)//打印线性表void outputMemory(SqlistPtr paraListPtr) //打印数据地址Sqlist sqList.
2022-04-25 23:22:00 664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人