- 博客(16)
- 收藏
- 关注
原创 N皇后问题
n皇后问题:指在n*n的棋盘上摆放n个皇后,使得任意两个皇后不在同一行、同一列或同一斜线上,求解满足这种摆放方式的解有多少种。代码:#include<iostream>#include<math.h>using namespace std;#define max 100int x[max];int n;//皇后数量 int sum = 0;//计算结解的个数//判断即将放置的位置(row,col)是否满足 bool place(int row,int c
2022-05-29 18:59:57
166
原创 哈夫曼树及编码
在认识哈夫曼树之前,必须先了解以下几个基本术语:1、什么是路径?在一棵树中,从一个结点往下可以达到的结点之间的通路,称为路径。2、什么是路径长度?某一路径所经过的“边”的数量,称为该路径的路径长度。3、什么是结点的带权路径长度?若将树中结点赋给一个带有某种含义的数值,则该数值称为该结点的权。从根结点到该结点之间的路径长度与该结点的权的乘积,称为该结点的带权路径长度。4、什么是树的带权路径长度?树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。5、什么是哈夫
2022-05-29 18:48:26
935
原创 数据结构——二叉树
1、结构体定义typedef struct BTNode { char element; BTNode* left; BTNode* right;}*BTNodePtr;typedef struct BTNodePtrQueue{ BTNodePtr* nodePtrs; int front; int rear;}BTNodePtrQueue,*QueuePtr;2、初始化QueuePtr initQueue(){ QueuePtr resultQueuePt
2022-05-24 19:45:35
129
原创 压缩矩阵的转置
矩阵转置的实现思路是:不断遍历存储矩阵的三元组表,每次都取出表中 j 列最小的那一个三元组,互换行标和列标的值,并按次序存储到一个新三元组表中。1.定义typedef struct Triple{ int i; int j; elem e;}Triple, *TriplePtr; //typedef struct CompressedMatrix{ int rows,columns,numElements; Triple* elements;}CompressedMat
2022-05-19 20:23:22
263
原创 二维数组与矩阵乘法
两个矩阵只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。运算规则:将第一个矩阵的第i行的每个元素分别乘上第二个矩阵第j列的每个元素然后进项相加,得到的结果就为新矩阵的第i行第j列的元素。先看老师代码:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#.
2022-05-19 20:12:50
268
原创 数据结构:队列
1.链队列的链式存储结构表示为链队列,它实际上是一个同时带有队头指针和队尾指针的单链表,只不过它只能尾进头出而已。先看老师代码:#include <stdio.h>#include <malloc.h>/** * 链队列的节点. */typedef struct LinkNode { int data; LinkNode* next;}*LinkNodePtr;/** * 链队列. */typedef struct LinkQueue .
2022-05-17 20:54:30
228
原创 累加和汉诺塔问题
先看老师代码#include <stdio.h>/** * Hanoi. */void hanoi(int paraN, char paraSource, char paraDestination, char paraTransit) { if (paraN <= 0) { return; } else { hanoi(paraN - 1, paraSource, paraTransit, paraDestination); printf("%c -...
2022-05-12 20:11:38
168
原创 栈——表达式求值
老师代码//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 = num
2022-05-10 21:02:34
90
原创 栈——括号的应用
通过栈判断式子的括号是否使用正确,若正确返回1,否则返回0。代码如下bool bracketMatching(char* parastring, int Length){ StackPtr tempStack = initStack(); push(tempStack, '#'); char ch, popch; int i; for (i = 0; i < Length; i++) { ch = parastring[i]; switch (ch) { ca
2022-05-10 20:51:22
116
原创 数据结构——栈
栈的定义:栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈低(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除,所以栈又被称为后进先出的线性表(简称LIFO:Last in, First out.结构)。数据结构——栈先看老师代码#include <stdio.h>#include <malloc.h>#define STACK_MAX_...
2022-05-10 16:35:08
228
原创 数据结构——多项式的加法
先看老师代码#include <stdio.h>#include <malloc.h>/** * Linked list of integers. The key is data. The key is sorted in non-descending order. */typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} *LinkList, *Nod
2022-05-05 23:17:14
624
原创 数据结构——静态链表
先看老师代码#include <stdio.h>#include <malloc.h>#define DEFAULT_SIZE 5typedef struct StaticLinkedNode{ char data; int next;} *NodePtr;typedef struct StaticLinkedList{ NodePtr nodes; int* used;} *ListPtr;/** * Initialize the list
2022-05-03 20:56:53
596
1
原创 数据结构——双向链表
双向链表结点结构typedef struct DoubleNode{ ElemType data; struct DoubleNode *previous;//前驱结点 struct DoubleNode *next;//后继结点}DoubleNode,*DLinkList;双向链表插入操作:1. q->next = p;2. q->previous = p->previous;3. p->previous->next..
2022-05-03 18:46:07
407
原创 数据结构——单链表
dan链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。...
2022-04-29 11:44:47
891
原创 数据结构——顺序表
线性表: 线性表就是数据排成像一条线一样的结构.每个现行表上的数据最多只有前和后两个方向.常见的线性表结构:数组,链表、队列、栈等。顺序表则是线性表里的一个分支,表示的是用一组地址连续的储存单元依次储存线性表的数据元素,这种表示也称作线性表的顺序储存结构。老师的代码:1.typedef struct SequentialList功能:创建长度为的顺序表2.SequentialListPtr sequentialListInit功能:初始化3.void sequential...
2022-04-25 22:44:38
481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人