- 博客(17)
- 收藏
- 关注
原创 数据结构12.1-邻接表
目录一、定义二、初始化三、打印邻接表四、广度优先遍历五、测试函数六、完整代码七、运行结果邻接表是图的一种链式存储结构。使用邻接表的目的是为了避免当边数目相对于顶点数目很小的时候,对存储空间造成了浪费.。其中使用队列与图相关操作与图的遍历一样,这里就不过多赘述二、初始化三、打印邻接表四、广度优先遍历五、测试函数六、完整代码七、运行结果
2022-05-31 21:00:46 388
原创 数据结构12-图的遍历
目录一、定义二、初始化三、两种遍历函数(两种遍历方式)四、测试函数五、完整代码六、运行结果一、定义图:图G由两个集合V和E组成的,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。图的遍历:从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历。// 使用队列来管理图中数据typedef struct GraphNodeQueue{ int* nodes; int front
2022-05-31 20:26:34 200
原创 数据结构11-哈夫曼树和N皇后问题
一、定义在认识哈夫曼树之前,我们需要知道几个定义:1、路径:从树中一个结点到另一个结点的分支构成这两个结点的路径,如下图根节点A到叶子结点G的路径为A->C->G。2、路径长度:简而言之就是路径上的分支数目,如A到G经过了两条边,则该路径长度为23、权:赋予某个实体的一个量,是对实体的某个或某些属性的数值化描述。在数据结构中,实体有结点(元素)和边(关系)两大类,所以对应有结点权和边权。4、结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。5、树的带权路径
2022-05-26 16:13:20 279
原创 数据结构10-二叉树的构建与遍历
一、定义二叉树是n(n≥0)个结点所构成的集合,它或为空树(n=0),或为非空树,非空树是由一个根(root)以及两个不相交的元素,被称为左子树(Left child)和右子树(Right child)的二叉树组成的。如图:代码实现:typedef struct BTNode{ char element; BTNode* left; // 左子树 BTNode* right; // 右子树}BTNode, *BTNodePtr;二、初始化首先需要定义一个队列来储存
2022-05-24 17:17:06 163
原创 数据结构9.1-压缩矩阵的转置
目录一、定义结构体二、压缩矩阵三、打印矩阵四、转置压缩矩阵五、测试函数六、完整代码七、运行结果一、定义结构体typedef struct Triple{ int i; // 行 int j; // 列 elem e; // 元素值} Triple, *TriplePtr;typedef struct CompressedMatrix{ int rows,columns,numElements; Tr
2022-05-19 21:49:47 49
原创 数据结构9-二维数组与矩阵乘法
目录一、定义结构体二、数组的初始化三、随机产生数组元素四、打印数组五、两个数组相乘六、测试七、总代码八、运行结果九、总结一、定义结构体// 动态分配(后续使用这种)typedef struct TwoDArray{ int rows; // 行 int columns; // 列 int** elements; // 元素 } TwoDArray, *TwoDArrayPtr;// 静态分配typedef
2022-05-19 15:19:03 56
原创 数据结构8.1-循环队列
一、定义结构体typedef struct CircleIntQueue{ int data[TOTAL_SPACE]; int head; int tail;}*CircleIntQueuePtr;二、初始化队列CircleIntQueuePtr initQueue() { CircleIntQueuePtr resultPtr = (CircleIntQueuePtr)malloc(sizeof(CircleIntQueuePtr)); resultPtr-&g
2022-05-16 19:10:51 488
原创 数据结构8-链队列
一、定义1.节点typedef struct LinkNode{ int data; // 数据域 LinkNode* next; // 指针域}*LinkNodePtr;2.队列typedef struct LinkQueue{ LinkNodePtr front; // 头指针 LinkNodePtr rear; // 尾指针}*LinkQueuePtr;二、初始化// 创建一个空的队列LinkQueuePtr initQueue(){
2022-05-16 12:01:15 217
原创 数据结构7-累加的递归、汉诺塔
一、累加的递归1.核心函数// 累加函数采用最为简单的递归方法 int addTo(int paraN) { int tempSum; printf("进入累加(%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);
2022-05-12 15:36:03 330
原创 数据结构6.2-栈的应用之表达式求值
表达式求值代码中除了一些栈的基本操作之外,下面主要展示其核心函数:1.优先级函数// 优先级函数char Precede(char t1,char t2){ int i,j; char pre[7][7]={ {'>','>','<','<','<','>','>'}, {'>','>','<','<','<','>','>'},
2022-05-10 21:04:11 560
原创 数据结构6.1-栈的应用之括号匹配
括号匹配是数据结构中比较常见的应用之一,其算法思路如下:①顺序遍历给定test的每一个字符②对于除了括号之外的无关字符直接跳过③遇到开括号就压入栈④遇到闭括号就弹出当时的栈顶元素与之匹配⑤如果匹配成功则继续,如果不匹配则以失败结束由于括号匹配大部分代码与栈的基础操作相同,下面只展示核心代码:1.括号匹配bool bracketMatching(char* paraString, int paraLength) { int i; // 第一步:通过压入‘#’到.
2022-05-09 20:49:09 1360
原创 数据结构6-栈
1.定义栈是限定仅在表尾进行插入或删除的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶,相应地,表头端称为栈底。不含元素的空表称为空栈。栈的修改是按后进先出的原则进行的,因此,栈又称为后进先出的线性表。2.创建栈typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; } *CharStackPtr;3.栈的初始化//栈的初始化 CharStackPtr charStackInit()
2022-05-09 19:45:19 432
原创 数据结构5-多项式的加法
1、创建链表/* 创建链表 */typedef struct LinkNode{ int coefficient; //系数 int exponent; //指数 struct LinkNode *next; //指针域} *LinkList, *NodePtr;2、链表初始化/* 初始化链表 */LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struc
2022-05-06 10:44:07 67
原创 数据结构4-静态链表
1.创建链表typedef struct StaticLinkedNode{ char data; int next;} *NodePtr;typedef struct StaticLinkedList{ NodePtr nodes; int* used;} *ListPtr;2.初始化ListPtr initLinkedList(){ ListPtr tempPtr = (ListPtr)malloc(sizeof(struct StaticLinkedList));
2022-05-03 18:51:30 582
原创 数据结构3-双向链表
一、老师部分 1.完整代码 2.运行结果二、自己部分 一、老师部分1.完整代码#include <stdio.h>#include <malloc.h>typedef struct DoubleLinkedNode{ char data; //数据域 struct DoubleLinkedNode *previous; struct DoubleLinkedNode *next; //指针域 }DLNode,*DLN...
2022-05-03 18:21:08 156
原创 数据结构2-单链表
目录一、老师部分1.完整代码2.运行结果二、自己部分1.单链表的定义2.初始化3.取值4.查找5.插入6.删除7.前插法8.后插法9.完整代码10.运行结果一、老师部分1.完整代码#include <stdio.h>#include <malloc.h>typedef struct LinkNode{ char date; struct LinkNode *next;} LNode,*LinkList,
2022-04-29 10:57:53 74
原创 数据结构1-顺序表
目录:一、老师部分1.运行结果二、自己部分(函数实现)1.获取指定元素2.查找指定元素3.清除表中数据4.访问前置元素5.函数简单调用一、老师部分:#include <stdio.h>#include <malloc.h>#define LIST_MAX_LENGTH 10/** * Linear list of integers. The key is data. */typedef struct Sequential
2022-04-25 22:59:05 61
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人