- 博客(16)
- 收藏
- 关注
原创 数据结构N皇后问题
N 皇后问题源自国际象棋,所有棋子中权力最大的称为皇后,它可以直着走、横着走、斜着走(沿 45 度角),可以攻击移动途中遇到的任何棋子。N 皇后问题的具体内容是:如何将 N 个皇后摆放在 N*N 的棋盘中,使它们无法相互攻击。(1)确认有无位置(2) 回溯(3)标记序号(4)运行结果1)确认有无位置bool place(int* paraSolution, int paraT){ int j; for (j = 1; j < paraT; j ++){ if ((
2022-05-29 22:13:43 141
原创 数据结构哈夫曼树
赫夫曼树,别名“哈夫曼树”、“最优树”以及“最优二叉树”。学习哈夫曼树之前,首先要了解几个名词。 哈夫曼树相关的几个名词 路径 : 在一棵树中,一个结点到另一个结点之间的通路,称为 路径。(1)构建结点(2)代码实现(3)构建哈夫曼树1)构建结点typedef struct { int weight; int parent, left, right;}HTNode, *HuffmanTree;2)代码实现void Select(HuffmanTree HT, int
2022-05-29 22:10:19 123
原创 数据结构二叉树
二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和石子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。(1)建立队列及二叉树节点(2)初始化(3)判断队列是否为空(4)入队(5)出队(6)初始化(7)建立二叉树(8)前序遍历(9)中序遍历(10)后序遍历(11)主函数1)建立队列及二叉树节点typedef struct BTNode{ char element; BTNode* left; BTNode* ..
2022-05-24 20:01:22 213
原创 数据结构压缩矩阵的转置
矩阵转置是矩阵运算中极为重要的操作,但矩阵压缩后我们不能再按原来的方式用n*m的遍历方式进行转置操作,那我们应该怎么进行转置呢,首先想到的是以列为参考值对元素进行遍历转置,这样访问元素的顺序正好是转制后存储的顺序(1)建立矩阵(2)初始化(3)打印压缩矩阵(4)转置压缩矩阵(5)测试函数1.建立矩阵typedef struct Triple{ int i; int j; elem e;} typedef struct CompressedMatrix{
2022-05-19 20:37:40 128
原创 数据结构二维数组与矩阵乘法
(1)建立二维数组及矩阵(2)初始化(3)随机生成数(4)打印数组(5)矩阵相乘(6)测试函数(7)初始化原二维数组1.建立二维数组及矩阵typedef struct TwoDArray{ int rows; int columns; int** elements;} typedef struct TwoDStaticArray{ int rows; int columns; int elements[ROWS][COLUMNS];}2.初始化TwoDArrayPtr
2022-05-19 20:32:01 85
原创 数据结构循环队列
循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。(1)建立链表(2)初始化(3)进队列(4)出队列(5)打印(6)测试函数1建立链表typedef struct CircleIntQueue{ int data[TOTAL_SPACE]; int head; int .
2022-05-17 19:32:37 72
原创 数据结构链队列
链式队列,简称"链队列",即使用链表实现的队列存储结构。链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素,如图 1所示:图 链式队列的初始状态图 所示为链式队列的初始状态,此时队列中没有存储任何数据元素,因此 top 和 rear 指针都同时指向头节点。(1)建立链队列及其结点(2)初始化【建立一个空表】(3)打印(4)进队列(5)出队列(6)测试函数1建立链队列及其结点typedef struct.
2022-05-17 19:26:29 110
原创 数据结构栈与递归及汉诺塔
一.递归的实现二.汉诺塔(1)递归的实现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(paraN - 1) + paraN; printf(" return %d\r\n", tempSum); re
2022-05-12 20:50:44 248
原创 数据结构栈-表达式求值
#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.top(); num.pop();.
2022-05-10 20:35:25 218
原创 数据结构栈的应用
(1)建立空栈(2)初始化(3)打印(4)进栈(功能表达)(5)出栈(功能表达)(6)进出栈(功能实现)(7)检验括号是否匹配(功能实现)(8)检验括号是否匹配(功能表达)1建立空栈typedef struct CharStack { int top; int data[STACK_MAX_SIZE];} 2初始化CharStackPtr charStackInit() { CharStackPtr resultPtr = (CharStackPtr)malloc
2022-05-10 20:31:38 756
原创 数据结构栈
(1)建立空栈 (2)初始化(3)打印(4)进栈(功能表达)(5)出栈(功能表达)(6)进出栈(功能实现)1.建立空栈typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; }2.初始化CharStackPtr charStackInit() { CharStackPtr resultPtr = (CharStackPtr)malloc(sizeof(CharStack)); resultPtr
2022-05-10 20:19:09 190
原创 数据结构多项式相加
(1)建立链表(2)初始化链表(3)打印链表(4)打印结点(5)添加元素(6)相加(7)相加(功能实现)1建立链表typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;}2初始化链表LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struc...
2022-05-06 21:23:06 97
原创 数据结构静态链表
(1)建立链表(2)初始化链表(3)打印链表(4)在指定位置插入元素(功能实现)(5)删除指定元素(功能实现)(6)插入&删除1.建立链表typedef struct StaticLinkedNode{ char data; int next;}typedef struct StaticLinkedList{ NodePtr nodes; int* used;}2.初始化链表ListPtr initLinkedList(...
2022-05-03 19:47:32 578
原创 数据结构双链表
(1)建立链表(2)链表初始化(3)打印链表(4)在指定位置插入元素(功能实现)(5)删除指定位置的元素(功能实现)(6)插入元素(7)显示地址1.建立链表typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode *previous; struct DoubleLinkedNode *next;}2.链表初始化DLNodePtr initLinkList(){...
2022-05-03 19:41:14 126
原创 数据结构单链表
单链表(1)建立链表(2)建立头节点(3)输出当前链表(4)尾插法(5)指定位置插入(6)删除指定元素1.建立链表typedefstructLinkNode{chardata;structLinkNode*next;}LNode,*LinkList,*NodePtr;2.建立头节点LinkListinitLinkList(){NodePtrtempHeader=(NodePtr)malloc(sizeof(LNo...
2022-04-29 19:59:34 67
原创 初学顺序表
老师的顺序表代码,用于进行数据的增加与减少。#include <stdio.h>#include <malloc.h>#define LIST_MAX_LENGTH 10/*** Linear list of integers. The key is data.*/typedef struct SequentialList { int actualLength; int data[LIST_MAX_LENGTH]; //The maximum...
2022-04-25 20:00:17 80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人