- 博客(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
235
原创 【深入JavaScript】 函数执行过程与作用域链
函数执行过程与作用域链执行上下文在调用函数的之后,在函数执行之前,需要创建一个执行上下文。这个执行上下文有三个重要属性:作用域链变量对象this作用域链与变量对象当代码执行,解析标识符(查找变量) 的时候,首先从当前的变量对象(活动对象 )中搜索,如果没有找到,就会往后逐层搜索各个父级执行上下文的变量对象,直到全局上下文的变量对象——全局对象。这个由各级执行上下文的变量对象组成的链表就是作用域链。函数从创建到执行的七个过程前言因为在函数执行之前,需要创建它的执行上下文
2021-09-26 23:34:23
165
原创 【深入JavaScript】继承
继承原型链ECMA-262 把原型链定义为 ECMAScript 的主要继承方式基本思想:通过原型继承多个引用类型的属性和方法实现方式:子类的原型对象是父类的实例存在问题:a) 引用类型的属性会在子类实例中共享b) 子类在实例化时,不能给父类的构造函数传参评价:原型链存在的问题导致原型链基本不会被单独使用function SuperType() { this.property = true}SuperType.propertype.getSuperValue = functio
2021-09-25 16:05:32
121
原创 【深入JavaScript】原型链
原型链构造函数、原型对象、实例对象三者的关系每个函数内部都有一个 prototype 属性(原型),这是一个指针,指向了一个原型对象。所有通过构造函数实例化的实例对象,都会从关联的原型对象中“继承”属性。原型对象内部也有一个 constructor 属性(构造函数),也是一个指针,反向指回了构造函数。实例对象内部也有一个 _proto_ 属性,也是一个指针,也是指向了关联的原型对象。(Object的 _proto_ 是 null)function Person () { }var pers
2021-09-25 16:02:19
121
原创 哈夫曼编/译码器
哈夫曼编/译码器一、需求分析1. 问题阐述利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。2. 基本要求一个完整的系统应具有以下功能:(1)I:初始化(initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树
2021-05-28 23:35:41
2602
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
721
原创 用按层次顺序遍历二叉树的方法,统计树中具有度为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
6174
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
3925
原创 输出二叉树中从每个叶子结点到根结点的路径
算法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
6436
2
原创 魔王语言解释
魔王语言解释需求分析问题阐述有一个魔王总是使用自己的一种非常精炼而抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:(1)α→β1β2…βm(2)(θδ1δ2…δn)→θδnθδn-1…θδ1θ在这两种形式中,从左到右均表示解释。试写一个魔王语言的解释系统,把他的话解释成人能听懂的话。基本要求用下述两条具体规则和上述规则形式(2)实现。设大写字母表示魔王语言的词汇;小写字母表示人的语言词汇;希腊字母表示可以用
2021-04-16 12:41:19
2635
原创 基于单向循环链表的约瑟夫环
基于单向循环链表的约瑟夫环需求分析问题阐述约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,没人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报道m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为值,试设计一个程序求出出列顺序基本要求利用单向循环链表存储结构模拟此过程,按照出列的顺序印出个人的编号。基本思路利用单向循环
2021-04-16 11:43:10
309
原创 基于单链表的“学校运动会管理系统”
基于单链表的“学校运动会管理系统”需求分析问题阐述在“学校运动会管理系统“中,设有n个单位参加运动会(单位可以是学院、系、年级等,应可设定),共有男子比赛项目m,女子比赛项目w。每个学院可以选择参加参赛项目,运动员参赛项目应有所限制,如最多只能参加3项单项比赛。各项目名次选取应可设置,随系统环境而变化,如:参数人数超过6人,取前5名:第一名得7分,第二名得5分,第三名得3分,第四名得2分,第五名得1分;参赛人数不超过6人,取前3名:第一名得5分,第二名得3分,第三名得2分。参赛人数不足4人的项目
2021-04-16 11:28:07
772
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
1474
1
基于单链表的“学校运动会管理系统”
2021-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人