- 博客(12)
- 收藏
- 关注
原创 哈夫曼树及n皇后
目录哈夫曼树:n皇后问题:哈夫曼树:定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。构建步骤如下: 1、将给定的n个权值看做n棵只有根节点(无左右孩子)的二叉树,组成一个集合HT,每棵树的权值为该节点的权值。 2、从集合HT中选出2棵权值最小的二叉树,组成一棵新的二叉树,其权值为这2棵二叉树的权值之和。 3、将步骤2中选出的2棵二叉树从集合HT中删去,同时将步骤2中新得到的二叉树加入到集合HT中...
2022-05-29 18:20:56
126
原创 二叉树的构建与遍历
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。根结点:根节点没有前驱结点。除根节点外,其余结点被分成是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的。节点的度:一个节点含有的子树的个数称为该节点的度;叶节点:度为0的节点称为叶节点;非终端节点或分支节点:度不为0的节点;双亲节点或父节点:若一个节点含有子节点,则这个节点称
2022-05-24 20:48:50
92
原创 矩阵乘法&压缩矩阵的转置
目录矩阵乘法:压缩矩阵的转置:矩阵乘法:1、定义三个二维数组来存储第一个矩阵、第二个矩阵和相乘后得到的新矩阵。2、对第一个、第二个矩阵的每个进行赋值(要注意的是我们需要让第一个矩阵的列数等于第二个矩阵的行数),然后将其打印出来。3、使用for循环语句,先遍历第二个矩阵的第j列的每一个元素,然后将其与第一个元素的第i列的每一个元素进行相乘并相加。将其运算后的结果放在对应第i行第j列的新数组中。4、再利用for循环将得到的新数组进行一个元素一个元素的输出。#incl...
2022-05-19 19:15:05
157
原创 链队列、循环队列
队列的定义:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。链队列:代码:#include <stdio.h>#include <malloc.h>typedef struct LinkNode{ int data; LinkNode* next;}*LinkNodePtr;.
2022-05-17 20:14:03
46
原创 ——递归及汉诺塔问题
递归: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); return tempSum; }}
2022-05-12 19:11:54
67
原创 栈及栈的应用-(括号匹配、表达式求值)
栈的定义:栈是一种“先进后出”的一种数据结构,有压栈出栈两种操作方式。定义结构体:typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; } *CharStackPtr;输出堆栈:void outputStack(CharStackPtr paraStack) { for (int i = 0; i <= paraStack->top; i ++) { p.
2022-05-10 13:31:14
145
原创 多项式加法
结构体定义:typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} *LinkList, *NodePtr;初始化链表:LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); tempHeader->coefficient = 0; tempHea
2022-05-06 10:57:47
56
原创 ---双向链表
双向链表定义:双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。1、初始化链表typedef struct doublelinkednode{ char data; struct doublelinkednode*previous; struct doublelinkednode*next;}dlnode,*dlnodeptr;
2022-05-03 16:44:15
578
1
原创 ——静态链表
定义:静态链表就是借助数组来描述线性表的链式存储结构,此时的数组的分量就是我们自己定义的结构体,数组中的一个分量表示一个结点,同时用游标代替指针描述结点在数组中的相对位置,即数组的分量形式是结点+游标。此外,数组的第0个分量可以看成链表中的头结点,其游标即链表中的指针域则就指向链表的第一个结点。 游标 0 1 2 3 4 ······ ····.
2022-05-03 15:35:09
892
1
原创 2.2单链表
1、引入库typedef struct LinkNode{ char data; struct LinkNode *next;}LNode,*LinkList,*NodePtr;初始化列表,建立头节点LinkList initLinkList(){ NodePtr tempHeader = (NodePtr)malloc(sizeof(LNode)); tempHeader->data='\0'; tempHeader->next = NULL; return te
2022-04-28 15:02:11
679
原创 【无标题】
老师的原代码:#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 length is fi.
2022-04-25 23:17:01
52
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人