c
文章平均质量分 72
perry0528
这个作者很懒,什么都没留下…
展开
-
C | 二叉树的创建销毁遍历,计算叶子数,深度以及对二叉树进行拷贝等基本操作
二叉树是一块比较重要的知识点,而且是从线性结构到树形结构的一个跨越,建议大家动手实现以下。树是递归算法最好的应用,当然不嫌麻烦的话也可以用栈。前序遍历初始化树:void InitializeTree(Tree *T) { char ch; scanf("%c",&ch); if (ch == '*') { (*T) = NULL...原创 2018-09-08 01:26:17 · 337 阅读 · 0 评论 -
malloc动态分配内存越界问题
char *a = (char*)malloc(3 * sizeof(char));strcpy(a, "123");free(a);以上代码会报错,如果加断点调试的话会发现报错点是在free(a)上。具体原因是忘记了字符串末尾的’\0’结束字符,所以这段内存申请是存在申请不足的问题,从而使得使用时出现了堆越界问题。我们先想为什么 free()函数为什么不需要指定内存大小就能对动态申请...原创 2019-03-28 14:06:36 · 2373 阅读 · 0 评论 -
c || 读入文本中的数字(忽略掉非数字的无用字符)
关于读取文本发现一个贼好用的组合 getc和ungetc组合进行字符是否合法的判断。int freadNum(FILE *fp, int *i){ int tmp; int count = 0; while ((tmp = getc(fp)) != EOF) { if ((tmp >= '0'&& tmp <= '...原创 2019-04-01 15:08:01 · 814 阅读 · 0 评论 -
动态查找表 || 二叉排序树的c++实现
二叉排序树的特性:若左子树不空,左子树上所有结点的值均小于它的根结点值。若右子树不空,右子树上所有结点的值均大于它的根结点值。左右子树分别为二叉排序树。删除算法:被删除的结点是叶子结点。被删除的结点只有左子树或有右子树。被删除的结点既有左子树又有右子树。对于第三种我们选择删除结点的左子树的最右结点。查找性能的分析:(平均查找长度)不同树的平均查找长度不同,即使是相同序...原创 2019-03-21 17:02:05 · 413 阅读 · 0 评论 -
数据结构 || 图的广度优先搜索遍历以及求两点间的最短路径
图的广度优先搜索遍历:存储的数据结构为无向图的多重邻接表类似于树的层序遍历,依次按照路径为1,2,3…进行遍历,因而每次要获得一个节点然后得到这点的未经访问的邻近点后再将此点抛弃,因此我们用队列这一结构。void BFSReverse(AMLGraph G) { queue<int> a; for(int i = 0; i < G.vexnum; ++i) { ...原创 2019-01-21 21:49:59 · 3768 阅读 · 0 评论 -
操作系统 || 同步互斥问题
题目:同步互斥问题生产者消费者问题读者写者问题1、实验目的1. 利用线程同步机制,实现生产者消费者文体。2. 用信号量机制分别实现读者优先和写者优先的读者-写者问题。2、实验要求生产者消费者问题 设计一个程序来解决有限缓冲问题,其中的生产者与消费者进程如图6.10 与图6.11 所示。 在6.6.1 小节中,使用了三个信号量: empty (以记录有多少空位) ful...原创 2018-12-09 20:10:56 · 1840 阅读 · 0 评论 -
信息安全技术 || DES加密算法
算法原理:DES算法是一种对称加密算法,以64位为分组对数据加密,加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8 位都用作奇偶校验),密钥可以是任意的56位的数,而且可以任意时候改变。其中有极少数被认为是易破解的弱密钥,但是很容易避开它们不用。所以保密性依赖于密钥。其基本流程如下:首先要生成一套加密密钥,从用户处取得一个64位长的密码口令,然后通过等分、移位、选取和迭代形成一...原创 2018-12-09 20:05:01 · 2105 阅读 · 0 评论 -
C || 图的四种存储结构实现
1. 数组表示法:#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;limits.h&amp;amp;gt;#define INFINITY INT_MAX#define Maxvex 100typedef struct graph { int vexs[Maxvex+1]; //顶点 int AdjMatrix[Maxvex+1][Maxvex+1];原创 2018-09-21 21:00:26 · 2209 阅读 · 0 评论 -
C || 图的遍历
图的深度遍历和广度遍历基于的数据结构是图的邻接表结构,详细可以看上一章节(图的存储结构)深度遍历:bool visited[100]; //用于表示节点是否被访问的标志位void DFS(Graph G, VertexType v) { visited[v] = 1; printf("%d\n",v); ArcNode *e = G.vertices[v].first; w...原创 2018-09-25 21:17:37 · 937 阅读 · 0 评论 -
C || 哈夫曼树及哈夫曼编码的实现
代码带有注释,不详细解释,检测采用严蔚敏老师数据结构的一个范例HuffmanCode.h#ifndef _HUFFMANCODE_H_#define _HUFFMANCODE_H_#include <stdbool.h>typedef struct { unsigned int weight; unsigned int parent, lchild, rchild;...原创 2018-09-18 11:26:16 · 727 阅读 · 0 评论 -
C | C++定义全局变量的方法
我们想定义一个全局变量,能够在多个文件中使用,举例说明比如说三个文件main.c hello.c hello.h 想在main.c和hello.c中使用一个名字为a的变量,可能大家会简单地想直接在hello.h里面定义一个变量unsigned int a; 然后在main.c和hello.c中引用”hello.h”就可以直接使用了,但这是编译器会报重复定义变量的错误,我们可以怎么做呢?方...原创 2018-09-07 13:54:07 · 18204 阅读 · 0 评论 -
C++ | Tree的实现(适用于一般的树)
其实主要是采用类似c这种面向过程的语言的接口实现办法,用c++更多只是为了调用队列,栈等一些接口网上资料大部分树的实现都是二叉树,而实际常见的树一般是普通的树所以我们要学会通过二叉树的思想来转换到普通的树来使用本文采用的存储结构为(孩子-兄弟)结点表示法,也叫二叉链表,有不懂得地方可以查看我的另外一篇关于树的存储结构的文章本文重点讨论三个函数,其他实现函数都大同小异 求树的深度打印树...原创 2018-09-11 11:32:13 · 26314 阅读 · 1 评论 -
CSAPP || Datalab
1. bitXorbitXor - x^y using only ~ and &Example: bitXor(4, 5) = 1Legal ops: ~ &Max ops: 14Rating: 1int bitXor(int x, int y) { return ~(x & y) & ~(~x & ~y);}2. tmintm...原创 2019-04-22 13:10:34 · 2265 阅读 · 2 评论