软件设计师知识点·2

高级语言编译与解释方式比较:
(1)效率:在解释方式下运行程序时,解释程序可能需要反复扫描源程序,
每一次引用变量都要进行类型检查,甚至需要重新进行类型分配,从而降低了程序的运行速度. 
以解释方式运行程序需要更多的内存,因为系统不但需要为用户程序分配运行空间,而且要为解释程序及其支撑系统分配空间;
编译程序除了对源程序进行语法和语义分析外,还要生成源程序的目标代码并进行优化,所以这个过程比解释方式需要更多的时间.
虽然与仔细写出的机器程序相比,由编译程序创建的目标程序运行的时间一般更长,需要占用的存储空间更多,
但源程序只需要被编译程序一次就可以多次运行;
(2)灵活性:由于解释程序需要反复检查程序,这也使得解释方式能够比编译方式更灵活.
当解释器直接运行源程序时,“在运行中”修改程序就成为可能,例如增加语句或者修改错误等.
另外,当解释器直接在源程序上工作时,它可以对错误进行更精确的定位;
(3)可移植性:解释器一般也是用某种程序设计语言的编写的,因此只要对解释器重新编译,就可以把解释器运行在不同的环境之中;
 
线性表采用顺序存储结构的优点是可以随机存取表中的元素,缺点是插入和删除操作需要移动元素;   
插入一个新元素需要移动的元素个数为: N/2;
删除元素时需要移动元素个数: N-1/2;
线性表的链式存储:节点空间只有在需要的时候才申请,无需实现分配,进行插入和删除,其实质都是对相关指针的修改;
当线性表采用链表作为存储结构时,不能对数据元素进行随机访问,但是具有插入和删除操作不需要移动元素的优点;
双向链表可以从表中任意的结点出发,可以从表中任意结点开始遍历整个链表;
循环链表可以从表中任意节点开始遍历整个链表;
静态链表,借助数组来描述线性表的链式存储结构,用数组元素的下标表示元素所在结点的指针;
设循环队列Q的容量为MAXSIZE,初始时队列为空,且Q.rear和Q.front都等于0;
元素入队时,修改队尾指针Q.rear=(Q.rear+1)%MAXSIZE;
元素出队时,修改队头指针Q.rear=(Q.front+1)%MAXSIZE;
 
含有子串的串称为主串;    
空串是任意串的字串;     
串相等:指两个串长度相等且对应序号的字符也相同;
串比较:两个串比较大小时的ASCⅡ值作为依据.
      比较操作从两个串的第一个字符开始进行,字符的码值大者所在的串为大;若其中一个串先结束,则以串长者为大;
赋值操作StrAssign(s,t):将串s的值赋给串t;  
连接操作Concat(s,t):将串t接续在s的尾部,形成一个新串;
子串的定位操作通常称为串的模式匹配,子串也成为模式串;
假设主串和模式串的长度分别为n和m,位置序号从0开始计算,朴素模式匹配算法匹配成功时字符间的平均比较次数为:1/2(n+m);
在最好情况下匹配算法的时间复杂度为O(m+n),最坏情况下的平均比较次数为1/2m(n-m+2),最坏情况下的时间复杂度为O(n*m);
 
数组的顺序存储:
以行为主序优先存储的地址计算公式为:Loc(aij) = Loc(a11) + ((i-1)*n+(j-1))*L;
以列为主序优先存储的地址计算公式为:Loc(aij) = Loc(a11) + ((j-1)*m+(i-1))*L;
 
若对称矩阵中的每一对元素仅占用一个存储单元,那么可将n2个元素压缩存储到能存放n(n+1)/2个元素的存储空间中;
矩阵的三元组表:(行标,列标 ,值);
广义表的长度是指广义表中元素的个数.广义表的深度是指广义表展开后所含的括号的最大层数;
 
结点的度.一个结点的子树的个数记为该节点的度.
结点的层次.根为第一层;
树的高度.一棵树的最大

你可能感兴趣的:(软件设计师)