随笔分类 - C/C++
摘要:2020 输入30个数存入数组a,求出数的每个位数的平方和存入数组b,从小到大排列后输出 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int Squares(int n){ //求平方和 5 int sum = 0, i; 6 for (i=1; i
阅读全文
摘要:2019 50个[100,300]的随机数,要求用二分法查找从键盘录入的关键数字。找到回复位置,找不到回复不存在 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 5 void sort(int arr[]) 6 { 7
阅读全文
摘要:2018 产生20个随机数,在[200,400]内,其中能被5整除的存入数组array2,要求输出array2中的平均值 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ srand((unsigned)time
阅读全文
摘要:最小生成树的概念:树:无回路,V个顶点一定有V-1条边;生成树:包含全部顶点,V-1条边都在图里;向生成树中任加一条边都一定构成回路;最小:边的权重和最小 如果最小生成树存在,图一定是连通的。 贪心算法:(贪)每一步都要最好的,(好)权重最下的边。 约束:只能用图里有点边,只能正好用掉V-1条边,树
阅读全文
摘要:题目: 思路: 因为是无向图,构造的时候别忘了双向赋值,判断有无路径,可以利用全局变量数组visited,我通过深度优先搜索DFS,从起点i开始搜索,如果走过一个点,更改visited即可,结束搜索后,判断visited[j]是否为1,就可以判断i和j之间是否存在路径了。图的创建可以从函数题里复制粘
阅读全文
摘要:题目 思路 通过最小堆模拟哈夫曼树,权值的计算就是删除堆中的两个最小元素,相加,插入最小堆。 平均码长=所有结点的编码总长度/所有结点的总频次 存储的名字是没有用处的,用主函数数组存储就行。 代码: #include <malloc.h> #include <stdio.h> #include <s
阅读全文
摘要:1.无向图可以用邻接矩阵G [n] [n] —— n个顶点从0到n-1编号,若<Vi, Vj>是G中的边,则G [i] [j] = 1,否则G [i] [j] = 0;矩阵的特点:对角线都为0,以对角线为对称轴,两边对称。 对于无向图的存储,可以用一个长度为n(n+1)/2的1维数组a存储,可以节省
阅读全文
摘要:对给定的有N个节点(N>=0)的二叉树,给出中序遍历序列,并判断是否为二叉搜索树。 题目保证二叉树不超过200个节点,节点数值在整型int范围内且各不相同。 输入格式: 第一行是一个非负整数N,表示有N个节点 第二行是一个整数k,是树根的元素值 接下来有N-1行,每行是一个新节点,格式为r d e
阅读全文
摘要:哈夫曼树的应用:根据结点不同的查找频率构造更有效的搜索树 最优二叉树/哈夫曼树:WPL(带权路径长度)最小的二叉树 typedef struct TreeNode *HuffmanTree; struct TreeNode { int Weight; HuffmanTree Left, Right;
阅读全文
摘要:优先队列:特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。采用数组或链表实现优先队列。 最大堆和最小堆:从根节点到任意结点路径上结点序列的有序性 typedef struct HeapStruct *MaxHeap; struct HeapStruct
阅读全文
摘要:以二叉链表作为二叉树的存储结构,交换二叉树中每个结点的左孩子和右孩子。 输入格式: 输入二叉树的先序序列。 提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。 输出格式: 输出有两行: 第一行是原二叉树的中序遍历序列; 第二行是交换后的二叉树
阅读全文
摘要:二叉搜索树也称二叉排序树或二叉查找树; 二叉搜索树:一颗二叉树可以为空;如果不为空,满足以下性质: 1.非空左子树的所有键值小于其根结点的键值。 2.非空右子树的所有键值大于其根节点的键值。 3.左、右子树都是二叉搜索树。 查找:Find 1.若X小于根节点键值,只需在左子树中继续搜索 2.若X大于
阅读全文
摘要:二叉树T:一个有穷的结点集合,这个集合可以为空。它是由根节点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。二叉树的子树有左右顺序之分。 特殊二叉树: 斜二叉树 完美二叉树(满二叉树):都是两个度 完全二叉树不一定是满二叉树,编号一样就行,可以少 二叉树的几个重要性质 一个二叉树第i层的最大
阅读全文
摘要:typedef struct LNode *List; struct Lnode { ElementType Element[MaxSize]; int length; }; 静态查找: 方法1:顺序查找(时间复杂度为O(n)) int SequentialSearch (List Tbl, Ele
阅读全文
摘要:队列:具有一定操作约束的线性表,只能在一端插入,在另一端删除。 特点:先来先服务,先进先出表 头front,尾rear 顺序存储 1 #define MaxSize <储存数据元素的最大个数> 2 3 struct QNode { 4 5 ElementType Data[MaxSize]; 6 7
阅读全文
摘要:堆栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行。Top一定在链表的head; 1 typedef struct SNode *Stack; 2 3 struct SNode { 4 5 ElementType Data; //int 6 7 struct SNo
阅读全文
摘要:1 #define MaxSize <储存数据元素的最大个数> 2 3 typedef struct SNode *Stack; 4 5 struct SNode { 6 7 ElementType Data[MaxSize]; 8 9 int Top; //栈顶的位置数组下标 10 11 } (1
阅读全文
摘要:1 typedef struct LNode *List; 2 3 struct LNode { 4 5 ElementType Data; //节点对应的数据 6 List Next; //下一个节点位置 7 }; 8 9 struct LNode L; 10 11 List PtrL; 1.求表
阅读全文
摘要:1 typedef struct LNode *List 2 3 struct Lnode { 4 5 ElementType Data[MAXSIZE]; 6 7 int Last; //线性表最后一个元素 8 9 }; 10 11 struct LNode L; 12 13 List PtrL;
阅读全文
摘要:函数deletelist从以head为头指针的链表中删除成绩低于min_score的学生,并返回结果链表的头指针。 1 struct stud_node *deletelist( struct stud_node *head, int min_score ) { 2 //删除成绩低于min_scor
阅读全文

浙公网安备 33010602011771号