
Small NestedLanguage(SNL)即简单的具有嵌套过程的程序设计语言,是一种教学用的过程式语言,最初由《编译程序的设计与实现》一书的作者设计并实现了其编译程序(SNLC)。
该语言具有标准数据类型和结构数据类型,可以嵌套定义过程,允许递归调用,过程的参数可以分为值参和变参两种形式,控制语句和Pascal语言基本相同,除指针类型外,SNL具备了过程式语言的基本特征。
SNL是自行定义的,很大程度上是一种类Pascal的“高级”程序设计语言。用其作为实例语言并构造编译程序,可以使绝大多数编译技术在编写元级程序的过程中得到体现。
一个合法的SNL程序是由程序头、声明部分和程序体组成的。
声明部分包括类型声明、变量声明和过程声明。SNL的语法规定可以声明整型(integer)、字符类型(char)、数组类型以及记录类型的类型标识符和变量。过程声明包括过程头、过程内部声明和过程体部分,过程声明内部还可嵌套声明内层过程。
程序体由语句序列组成,可以包括空语句、条件语句、循环语句、输入/输出语句、过程调用和返回语句。表达式分为简单算术表达式和关系表达式。
算法设计已知一个含有100个记录的表,关键字为中国人姓氏的拼音,请给出此表的一个哈希表设计方案,要求在等概率情况下查找成功的平均查找长度不超过3。
(1) 根据平均查找长度不超过3,确定装填因子α;
snl≈1/2(1+(1/(1-α))){使用线性探测再散列解决冲突}
因snl<=3,所以α至少为0.8,取α=0.8.
(2) 根据α确定表长
由α=(表中添入的记录数)/(哈希表的长度)
所以 哈希表的长度=100/α=125
取表长=150;
(3) 选取哈希函数
H(key)=key MOD 149
(4) key 的选取方法。
设大写字母在表中用1..26 表示,小写字母用27--52 表示。每个人的姓名取四个字
母(两字姓名取首尾两个字母,三字姓名取各字拼音第一个字母,中间字取首尾两
个拼音字母)。
将前两个拼音字母的序号并起来,后两个也并起来, 然后相加形成关键字。要求姓名
的第一个拼音字母要大写,如姓名'王丽明'拼音为'Wang liming',取出四个拼音字母
为'W,l,i,m',个字母序号依次为 23 38 35 39,组成关键字为 2338+3539=5877,该姓
名的哈希地址为 5877 MOD 149=66。
(5) 用线性探测再散列处理冲突。
这是设计原理,别的要求没拉:(
你的是win7系统吧?1、进入控制面板(用类别视图)-选程序 然后默认程序那一行后面有个 始终使用指定的程序打开此文件类型
2、在d出的对话框中选择要更改的文件类型
3、单击浏览选择正确的程序,再确定就行了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)