- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 【深入JavaScript】闭包
定义 《JavaScript高级程序设计》对闭包的定义: 闭包指那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。 e.g.: function foo () { a = 1 return function () { console.log(a) } } var bar = foo() bar() // 1 思考 Q1:我们知道,当调用闭包的外部函数的时候,在函数执行结束之后,函数的执行上下文就会退出执行上下文栈,活动对象的也会被销毁。那为什么在外部函数被调用之
2021-09-27 23:43:04
305
原创 【深入JavaScript】 函数执行过程与作用域链
函数执行过程与作用域链 执行上下文 在调用函数的之后,在函数执行之前,需要创建一个执行上下文。 这个执行上下文有三个重要属性: 作用域链 变量对象 this 作用域链与变量对象 当代码执行,解析标识符(查找变量) 的时候,首先从当前的变量对象(活动对象 )中搜索,如果没有找到,就会往后逐层搜索各个父级执行上下文的变量对象,直到全局上下文的变量对象——全局对象。 这个由各级执行上下文的变量对象组成的链表就是作用域链。 函数从创建到执行的七个过程 前言 因为在函数执行之前,需要创建它的执行上下文
2021-09-26 23:34:23
235
原创 【深入JavaScript】继承
继承 原型链 ECMA-262 把原型链定义为 ECMAScript 的主要继承方式 基本思想:通过原型继承多个引用类型的属性和方法 实现方式:子类的原型对象是父类的实例 存在问题: a) 引用类型的属性会在子类实例中共享 b) 子类在实例化时,不能给父类的构造函数传参 评价:原型链存在的问题导致原型链基本不会被单独使用 function SuperType() { this.property = true } SuperType.propertype.getSuperValue = functio
2021-09-25 16:05:32
181
原创 【深入JavaScript】原型链
原型链 构造函数、原型对象、实例对象三者的关系 每个函数内部都有一个 prototype 属性(原型),这是一个指针,指向了一个原型对象。所有通过构造函数实例化的实例对象,都会从关联的原型对象中“继承”属性。 原型对象内部也有一个 constructor 属性(构造函数),也是一个指针,反向指回了构造函数。 实例对象内部也有一个 _proto_ 属性,也是一个指针,也是指向了关联的原型对象。(Object的 _proto_ 是 null) function Person () { } var pers
2021-09-25 16:02:19
191
原创 哈夫曼编/译码器
哈夫曼编/译码器 一、需求分析 1. 问题阐述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。 2. 基本要求 一个完整的系统应具有以下功能: (1)I:初始化(initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树
2021-05-28 23:35:41
2751
4
原创 对顺序存储的完全二叉树按层次遍历输出
#include <stdio.h> #define MAX_TREE_SIZE 7 #define TElemType int #define MAX_QUEUE_SIZE 100 #define QElemType int // 初始化队头指针和队尾指针 int front = 0, rear = 0; typedef TElemType SqBiTree[MAX_TREE_SIZE]; typedef QElemType SqQueue[MAX_QUEUE_SIZE]; // 入队
2021-05-03 00:50:59
790
原创 用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目
#include <stdio.h> #include <stdlib.h> #define TElemType int //初始化队头和队尾指针 int front = 0, rear = 0; typedef struct BiTNode { TElemType data; //数据域 struct BiTNode *lchild, *rchild; //左右孩子指针 } BiTNode, *BiTree; void Crea
2021-05-03 00:49:30
6468
2
原创 求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值
#include <stdio.h> #include <stdlib.h> #define TElemType int //初始化队头和队尾指针 int front = 0, rear = 0; typedef struct BiTNode { TElemType data; //数据域 struct BiTNode *lchild, *rchild; //左右孩子指针 } BiTNode, *BiTree; void Crea
2021-05-03 00:46:18
4154
原创 输出二叉树中从每个叶子结点到根结点的路径
算法 void AllPath(BiTNode *p, TElemType *data, int len) { if (p) { if (p->lchild == NULL && p->rchild == NULL) { visit(p); for (int i = len - 1; i >= 0; i--) printf("%d ", data[
2021-05-03 00:43:41
6612
2
原创 魔王语言解释
魔王语言解释 需求分析 问题阐述 有一个魔王总是使用自己的一种非常精炼而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α→β1β2…βm (2)(θδ1δ2…δn)→θδnθδn-1…θδ1θ 在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听懂的话。 基本要求 用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用
2021-04-16 12:41:19
2799
原创 基于单向循环链表的约瑟夫环
基于单向循环链表的约瑟夫环 需求分析 问题阐述 约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,没人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报道m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为值,试设计一个程序求出出列顺序 基本要求 利用单向循环链表存储结构模拟此过程,按照出列的顺序印出个人的编号。 基本思路 利用单向循环
2021-04-16 11:43:10
362
原创 基于单链表的“学校运动会管理系统”
基于单链表的“学校运动会管理系统” 需求分析 问题阐述 在“学校运动会管理系统“中,设有n个单位参加运动会(单位可以是学院、系、年级等,应可设定),共有男子比赛项目m,女子比赛项目w。每个学院可以选择参加参赛项目,运动员参赛项目应有所限制,如最多只能参加3项单项比赛。 各项目名次选取应可设置,随系统环境而变化,如: 参数人数超过6人,取前5名:第一名得7分,第二名得5分,第三名得3分,第四名得2分,第五名得1分;参赛人数不超过6人,取前3名:第一名得5分,第二名得3分,第三名得2分。参赛人数不足4人的项目
2021-04-16 11:28:07
855
1
原创 对称矩阵、三角矩阵的压缩存储的输入与输出算法
#include <math.h> #include <stdio.h> #define M 3 #define N 3 // 对称矩阵的输入 void Symmetric_input(int **A, int n, int B[]) { int i, j, k = 0; // 将对称元素及对称轴上的元素存入数组B for (i = 0; i < n; i++) for (j = 0; j < i + 1; j++)
2021-04-15 22:15:42
1552
1
基于单链表的“学校运动会管理系统”
2021-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人