- 博客(16)
- 收藏
- 关注
原创 n皇后问题
用回溯法解决n皇后问题#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <math.h>bool ismeetcondition(int *solution,int paraT){ for(int i=0;i<paraT-1;i++){ if (solution[i]==solution[paraT-1] || abs(paraT-i-1)==abs(so
2022-05-29 22:31:56
105
原创 哈夫曼树(数据结构作业)
路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。图 1 中从根结点到结点 c 的路径长度为 3。结点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。例如,图 1 中结点 a 的权为 7,结点 b 的权为 5。结点的带权路径长度:指的是从根结点到该结点之间的路径长度
2022-05-29 22:29:35
192
原创 二叉树(数据结构作业)
二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树创建队列以及二叉树结点typedef struct BTNode{ char element; BTNode* left; BTNode* right;} typedef struct BTNodePtrQueue{ BTNodePtr* nod
2022-05-24 20:56:45
146
原创 压缩矩阵转置
定义行列数typedef struct Triple{ int i; int j; elem e;} Triple, *TriplePtr;typedef struct CompressedMatrix{ int rows,columns,numElements; Triple* elements;} CompressedMatrix, *CompressedMatrixPtr;初始化矩阵CompressedMatrixPtr initC
2022-05-22 22:32:55
83
原创 二维数组与矩阵乘法
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来构建矩阵typedef struct TwowArray{ int rows; int columns; int** elements;} TwowArray, *TwowArrayPtr; /** * Two dimens
2022-05-22 22:27:47
1024
原创 链队列(作业)
#include<stdio.h>#include<malloc.h>typedef struct linknode{ int data; linknode* next;}*linknodeptr;typedef struct linkqueue{ linknodeptr front; linknodeptr rear;}*linkqueueptr;linkqueueptr initqueue(){ linkqueueptr resultptr .
2022-05-17 18:05:26
63
原创 累加递归和汉诺塔问题
递归就是函数自身调用自身,即函数内部又使用到了该函数功能。递归的思想是把一个大型复杂问题层层转化为一个与原问题规模更小的问题,问题被拆解成子问题后,递归调用继续进行,直到子问题无需进一步递归就可以解决的地步为止。简单累加递归的实现tailrec fun add(num:Int, result:Int):Int { return if (num == 0) { result } else { add(num - 1, result + num) }}汉诺塔问题(老师的代码)
2022-05-12 22:56:57
82
原创 多项式求值
关于栈我已经有了基本的了解和一定的实操对于多项式求值因本人对c++了解很少固目前观摩学习对于c++的学习我也会抽空进行水平有限,加油冲冲冲#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <unordered_map> using namespace std; stack<int>
2022-05-10 22:22:15
273
原创 栈的应用--括号匹配
创建栈:typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; } *CharStackPtr; 栈的初始化: CharStackPtr charStackInit() { CharStackPtr resultPtr = (CharStackPtr)malloc(sizeof(CharStackPtr)); resultPtr->top = -1; return resultPtr;
2022-05-10 22:16:11
111
原创 数据结构作业(栈)
栈:栈是限定仅在表尾进行插入或删除的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶,相应地,表头端称为栈底。不含元素的空表称为空栈。栈的修改是按后进先出的原则进行的,因此,栈又称为后进先出的线性表。创建栈:typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; } *CharStackPtr;栈的初始化:CharStackPtr charStackInit() { CharStackPtr
2022-05-10 21:50:41
298
原创 多项式相加
结构体定义typedef struct LinkNode { int coefficient; int exponent; struct LinkNode *next;} *LinkList, *NodePtr; 初始化链表 LinkList initLinkList() { LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); //系数 tempHeader->coefficient = 0
2022-05-06 20:48:23
69
原创 静态链表(作业三)
创建节点typedef struct StaticLinkedNode{ char data; int next;} *NodePtr; typedef struct StaticLinkedList{ NodePtr nodes; int* used;} *ListPtr; 表头 ListPtr initLinkedList() { ListPtr tempPtr = (ListPtr)malloc(sizeof(StaticLinkedList)); t
2022-05-04 01:30:03
86
1
原创 双向链表 (作业3)
双链表与单链表的区别:单链表:由两部分组成:数据域和指针域,每个结点都有一个指针,每个节点指针的指向都是指向自身结点的下一个结点,最后一个结点的head指向为null,对的操作只能从一端开始,如果需要查找链表中的某一个结点,则需要从头开始进行遍历。双链表:对于双向链表来说,它的每个节点要指向“直接前驱”和“直接后继”,所以节点类需要含有两个指针域。指向直接前驱的指针使用pre表示,指向后继的指针使用next表示。双向链表是在单向链表基础上的一个改进,每个节点指向其直接前驱和直接后继节点。因此
2022-05-04 01:07:27
128
1
原创 单链表(作业2)
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。1.定义节点。typedef struct LinkNode{ char data; struct LinkNode *next;}LNode,*Linklist,*NodePtr;2.初始化Linklist initLinklist().
2022-04-29 21:34:18
696
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人