① 某进程访问页面的顺序为2,3,2,1,5,2,4,5,3,2,5,2,假设该进程分配3个物理块,L
方法:先进先出算法,工作区页面是3时头3次肯定缺页,把前3个页面放入工作区,然后看后面要访问的页面是否在工作区中,如果是就不动,如果不在即是缺页,把最早进入的页面替换掉。算出缺页次数再除以访内次数就是缺页率。
② 求教编程高手!!如何让浏览器依次访问有规律的网页
又!!病的不轻呀!!
出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
一:先说说硬件:
一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
二、如果都没有,那就从软件方面排除故障了。
先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。
首先建议:
1、 检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2、 更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3、 尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。
4、 删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。 在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。) 打开"服务和应用程序",单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs
下面搜集几个例子给大家分析:
例一:IE浏览器出现“0x0a8ba9ef”指令引用的“0x03713644” 内存,或者“0x70dcf39f”指令引用的“0x00000000”内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。解决方法:
1、 开始-运行窗口,输入“regsvr32 actxprxy.dll”回车,接着会出现一个信息对话 框“DllRegisterServer in actxprxy.dll succeeded”,确定。再依次运行以下命令。(这个方法有人说没必要,但重新注册一下那些.dll对系统也没有坏处,反正多方下手,能解决问题就行。)
regsvr32 shdocvw.dll
regsvr32 oleaut32.dll
regsvr32 actxprxy.dll
regsvr32 mshtml.dll
regsvr32 msjava.dll
regsvr32 browseui.dll
regsvr32 urlmon.dll
2、 修复或升级IE浏览器,同时打上系统补丁。看过其中一个修复方法是,把系统还原到系统初始的状态下。建议将IE升级到了6.0。
例二:有些应用程序错误: “0x7cd64998” 指令参考的 “0x14c96730” 内存。该内存不能为 “read”。解决方法:Win XP的“预读取”技术这种最佳化技术也被用到了应用程序上,系统对每一个应用程序的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟“内存映像”,并把这些信息储存到Windows\Prefetch文件夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。建议将虚拟内存撤换,删除Windows\Prefetch目录下所有*.PF文件,让windows重新收集程序的物理地址。
例三:在XP下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayerui.dll。右键,属性,也会出现兼容性的选项。
例四:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。
例五:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。
例六:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内 存,该内存不能为“read” ,并且提示Client.dat程序错误。解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。
例七:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。 解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。
该内存不能为read或written的解决方案关键词: 该内存不能为"read" 该内存不能为"written"
从网上搜索来的几篇相关文章.
使用Windows操作系统的人有时会遇到这样的错误信息:
““0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written””,然后应用程序被关闭。
如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。
一、应用程序没有检查内存分配失败
程序需要一块内存用以储存数据时,就需要使用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。
二、应用程序由于自身BUG引用了不正常的内存光标
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试突读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。如果系统经常有所提到的错误提示,下面的建议可能会有说明 :
1.检视系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,
从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。
有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3.试用新版本的应用程序。
Mode:
将虚拟内存撤换
答案:
目前为止是肯定的,也就是如在下次冷天到来时亦没再发生,就代表这是主因
追加:
如果你用 Ghost 恢复 OS 后建议 删除WINDOWS\PREFETCH目录下所有*.PF文件因为需让windows重新收集程序的物理地址
有些应用程序错误 "0x7cd64998" 指令参考的 "0x14c96730" 内存。该内存不能为 "read"推论是此原因
源由:
Win XP的“预读取”技术
这种最佳化技术也被用到了应用软件上,系统对每一个应用软件的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟“内存映像”,并把这些信息储存到WINDOWSPREFETCH数据夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。
后叙:
目前此方法亦是独步网络的(其码自己针对此问题查了许久),也是常见问题,原本几乎每天睡前关闭软件时一些程序都会发生...read...
现在就没发生了。
运行某些程序的时候,有时会出现内存错误的提示(0x后面内容有可能不一样),然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
不知你出现过类似这样的故障吗?
一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
下面先说说硬件:
一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。
如果都没有,那就从软件方面排除故障了。
先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当你放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。
下面我从几个例子给大家分析:
例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。 解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。
例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayerui.dll。右键,属性,也会出现兼容性的选项。
例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。
例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。
例五:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内 存,该内存不能为“read” ,并且提示Client.dat程序错误。 解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。
例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。 解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。
1 内存条坏了 更换内存条
2 双内存不兼容 使用同品牌的内存或只要一条内存
3 内存质量问题 更换内存条
4 散热问题 加强机箱内部的散热
5 内存和主板没插好或其他硬件不兼容 重插内存或换个插槽
6 硬件有问题 更换硬盘
7 驱动问题 重装驱动,如果是新系统,应先安装主板驱动
8 软件损坏 重装软件
9 软件有BUG 打补丁或更新到最新版本
10 软件和系统不兼容 给软件打上补丁或是试试系统的兼容模式
11 软件和软件之间有冲突 如果最近安装了什么新软件,卸载了试试
12 软件要使用其他相关的软件有问题 重装相关软件,比如播放某一格式的文件时出错,可能是这个文件的解码器有问题
13 病毒问题 杀毒
14 杀毒软件与系统或软件相冲突 由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试
15 系统本身有问题 有时候操作系统本身也会有BUG,要注意安装官方发行的更新程序,象SP的补丁,最好打上.如果还不行,重装系统,或更换其他版本的系统。
〔又一说〕
在控制面板的添加/删除程序中看看你是否安装了微软NET.Framework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NET.Framework时候,可以再重新安装。
另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NET.Framework正常工作的环境下)。这种情况你可以找一款不需要NET.Framework支持的ATI显卡驱动。
如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。
〔微软NET.Framework升级到1.1版应该没问题了〕
〔还有一说〕
方法一:
微软新闻组的朋友指点:开始--运行:regsvr32 jscript.dll
开始--运行:regsvr32 vbscript.dll
不过没解决---但提供了路子-----一次运行注册所有dll
搜索查找到方法如下:
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看
方法二:
这是个典型问题~~~~~引起这个问题的原因很多。一般来讲就是给系统打上补丁和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了]
造成这种问题的原因很多,不能单纯的下结论,尽量做到以下几点可能对你有帮助:
1。确保使用的是未修改过的软件(非汉化、破解版)
2。使用改软件时尽量不要运行其他软件。(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰)
3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)”
处理方法:
运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值", 将其他的删除。
〔我个人的最后解决和看法〕
我今天尝试了多种办法,最后我发现问题出在微软的NET.Framework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NET.Framework1.0和1.1,世界太平了。
另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。
--------------------------------------------------------------------------------
〔试验的结果〕
上面的方法,最管用、最彻底的方法是这个:
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:\,使用下面的“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的
我可以帮助你,你先设置我最佳答案后,我网络Hii教你。
③ 字地址序列与页面顺序
分配给改作业的共3页,刚开始已经把第0页装进去了,按照FIFO算法,
第一次寻找的字地址为115,在第一页,但是他不在该作业的内存中,发生一次缺页中断,将第一页调入内存;
第二次访问228,所在的第二页也不在内存中,发生缺页中断,并把第二页调入内存;
第三次访问88所在0页在内存中,所以就没发生缺页中断;
第四次访问446,所在的4页不在内存中,发生缺页中断,并把最早装进去的0页淘汰,用第四页替换;
第五次访问102,第一页在内存中,所以就不发生缺页中断;
.
共访问10次,发生了5次缺页中断,所以0.5的缺页中断率.
lru算法累似.
④ 对于如下的页面访问序列:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5。
FIFO淘汰算法:
内存块为3时,缺页中断(或称缺页次数、页面故障)为9;内存块为4时,缺页中断为10。(这似乎是一个奇怪的现象,同时也告诉我们,操作系统是一个复杂的机构,直观是靠不住的!)
LRU淘汰算法:
内存块为3时,缺页中断为10;内存块为4时,缺页中断为8。
(具体计算过程省略,解答时请楼主写出计算过程。)
⑤ LRU算法,页面访问序列1.2.3.4.2.1.5.6.2.1.2.3.7.6.3,分配给进程3页内存,开始内存为空,采用LRU算法
前3次不用说,都是缺页,现在计c=3,m={1,2,3}
加载4,未中,C=4。1最近没怎么使用,弃掉,m={2,3,4}
加载2,命中,调整LRU顺序,m={3,4,2}
加载1,未中,C=5。3最近最少用,m={4,2,1}
加载5,未中,C=6。4最近最少使用,m={2,1,5}
6,未中,C=7,弃2,{1,5,6}
2,未中,C=8,弃1,{5,6,2}
1,未中,C=9,弃5,{6,2,1}
2,中,调LRU{6,1,2}
3,未中,C=10,弃6,{1,2,3}
7,未中,C=11,弃1,{2,3,7}
6,未中,C=12,弃2,{3,7,6}
3,中,调LRU{7,6,3}
因此一共缺了C=12次
⑥ 操作系统: 考虑如下的页访问序列(序列中每一个元素都是页号): 12345213323454511325
《数据结构》试题
一、选择题(每小题2分,共30分)
1. 若某线性表中最常用的操作是取第i 个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间。
A、单链表 B、双链表 C、单向循环 D、顺序表
2. 串是任意有限个( )
A、符号构成的序列 B、符号构成的集合
C、字符构成的序列 D、字符构成的集合
3. 设矩阵A(aij ,l≤i,j≤ 10)的元素满足:
aij≠0(i≥j, l≤i, j≤ 10)
aij=0 (i<j, l≤i, j≤ 10)
现将A的所有非0元素以行序为主序存放在首地址为2000的存储区域中,每个元素占有4个单元,则元素A[9][5]的首址为
A、2340 B、2336 C、2164 D、2160
4. 如果以链表作为栈的存储结构,则退栈操作时( )
A、 必须判别栈是否满
B、 对栈不作任何判别
C、 必须判别栈是否空
D、 判别栈元素的类型
5. 设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为( )
A、front=front+1 B、front=(front+1)% m
C、rear=(rear+1)%m D、front=(front+1)%(m+1)
6. 深度为6(根的层次为1)的二叉树至多有( )结点。
A、 64 B、32 C、31 D、63
7. 将含100个结点的完全二叉树从根这一层开始,每层上从左到右依次对结点编号,根结点的编号为1。编号为49的结点X的双亲编号为( )
A、24 B、25 C、23 D、无法确定
8. 设有一个无向图G=(V,E)和G’=(V’,E’)如果G’为G的生成树,则下面不正确的说法是( )
A、G’为G 的子图 B、G’为G 的边通分量
C、G’为G的极小连通子图且V’=V D、G’为G的一个无环子图
9. 用线性探测法查找闭散列表,可能要探测多个散列地址,这些位置上的键值( )
A、 一定都是同义词 B、一定都不是同义词
C、都相同 D、不一定都是同义词
10. 二分查找要求被查找的表是( )
A、 键值有序的链接表 B、链接表但键值不一定有序
C、 键值有序的顺序表 D、顺序表但键值不一定有序
11. 当初始序列已经按键值有序,用直接插入算法对其进行排序,需要循环的次数为( )
A、n2 B、nlog2n C、log2n D、n-1
12. 堆是一个键值序列{k1,k2,…, kn},对i=1,2,…,|_n/2_|,满足( )
A、ki≤k2i≤k2i+1 B、ki<k2i+1<k2i
C、ki≤k2i且ki≤k2i+1(2i+1≤n) D、ki≤k2i 或ki≤k2i+1(2i+1≤n)
13.一个具有n个顶点的无向完全图的边数为( )
A、n(n+1)/2 B、n(n-1)/2 C、n(n-1) D、n(n+1)
14.在索引顺序表中查找一个元素,可用的且最快的方法是( )
A、用顺序查找法确定元素所在块,再用顺序查找法在相应块中查找
B、用顺序查找法确定元素所在块,再用二分查找法在相应块中查找
C、用二分查找法确定元素所在块,再用顺序查找法在相应块中查找
D、用二分查找法确定元素所在块,再用二分查找法在相应块中查找
15.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除最后一个元素,则采用( )存储方式最节省运算时间。
A、 单链表 B、双链表
C、带头结点的双循环链表D、容量足够大的顺序表
二、判断题(每小题1分,共10分)
1.双链表中至多只有一个结点的后继指针为空。( )
2.在循环队列中,front指向队列中第一个元素的前一位置,rear指向实际的队尾元素,队列为满的条件是front=rear。( )
3.对链表进行插入和删除操作时,不必移动结点。( )
4.栈可以作为实现程序设计语言过程调用时的一种数据结构。( )
5.在一个有向图的拓朴序列中,若顶点a在顶点b之前,则图中必有一条弧。( )i
6.对有向图G,如果从任一顶点出发进行一次深度优先或广度优先搜索就能访问每个顶点,则该图一定是完全图。( )
7.“顺序查找法”是指在顺序表上进行查找的方法。( )
8.向二叉排序树插入一个新结点时,新结点一定成为二叉排序树的一个叶子结点。()
9.键值序列{A,C,D,E,F,E,F}是一个堆。
10.二路归并时,被归并的两个子序列中的关键字个数一定要相等。()
三、填空题(每小题2分,共20分)
1.在带有头结点的单链表L中,若要删除第一个结点,则需执行下列三条语句:________;L->next=U->next;free(U);
2.有一个长度为20的有序表采用二分查找方法进行查找,共有______个元素的查找长度为3。
3.采用冒泡排序对有n个记录的表A按键值递增排序,若L的初始状态是按键值递增,则排序过程中记录的比较次数为_____。若A的初始状态为递减排列,则记录的交换次数为_______。
4.在无头结点的双链表中,指针P所指结点是第一个结点的条件是______。
5.G为无向图,如果从G的某个顶点出发,进行一次广度优先搜索,即可访问图的每个顶点,则该图一定是_____图。
6.如果一个有向图中没有______,则该图的全部顶点可能排成一个拓扑序列。
7.深度为8(根的层次号为1)的满二叉树有______个叶子结点。
8.将一棵有100个结点的完全二叉树按层编号,则编号为49的结点X,其双亲PARENT(X)的编号为_______。
9.设某闭散列表HT未满,散列函数H(KEY)为键值第一字母在字母表中的序号,处理冲突方法为线性探测法,请在下列算法划线处填上适当内容,以实现按键值第一字母的顺序输出闭散列表中所有键值的算法。
void printword(keytype HT[m])
{ for(i=1;i<=26;i++)
{ j=i;
while(____________________)
{ if (____________________) printf(“datatype”,HT[j]);
j=(j+1)% m;
}
}
}
10.设有一个链队,结点结构为data|next,front为队头指针,rear为队尾指针,当执行入队操作时需执行下列语句:
malloc(p);p->data=x; p->next=NULL;
________________;
________________;
四、简答题:(每小题4分,共20分)
1. 对于一个有10000个结点的二叉树,树叶最多有多少个?最少有多少个?
2. 已知一棵二叉树的中序序列和后序序列分别为: DBGEACHF和DGEBHFCA,则该二叉树的前序序列是什么?
3. 设有1000个无序的元素,需排出前10个最大(小)的元素,你认为采用哪种排序方法最快?为什么?
4. 在KMP算法中,已知模式串为ADABCADADA ,请写出模式串的next[j]函数值。
5. 中序遍历的递归算法平均空间复杂度为多少?
五、 算法设计题(每小题10分,共20分)
1. 试编写一个算法,判断一给定的整型数组a[n]是不是一个堆。
2. 一棵二叉树的繁茂度定义为各层结点数的最大值与树的高度的乘积。试写一高效算法,求二叉树的繁茂度。
参考答案
一、选择题
1、D 2、C 3、D 4、C 5、D 6、D 7、A 8、B 9、D 10、C 11、D 12、C
13、B14、C15、D
二、判断题
1. √ 2. × 3. √ 4. √ 5. × 6. × 7. × 8. √ 9. √ 10. ×
三、填空题
1.U=L - > next
2.4。
3.n-1、n(n-1)/2。
4.p - > prior = NULL。
5.连通
6.回路或环
7.28-1 = 27 = 128
8.24
9.HT[j]!=NULL或HT[j]不为空、H(HT[j])=I
10.rear - > next = p、rear = p
四、简答题:
1. 答: 最多是完全二叉树的形态,即5000个叶子;最少是单支树的形态,即1个叶子。
2.答:是:ABDEGCFH
3. 答:用锦标赛排序或堆排序很合适,因为不必等全部元素排完就能得到所需结果,
时间效率为O(nlog2n); 即O(1000log21000)=O(10000)
锦标赛排序的准确比较次数为:n-1+9log2n=999+9log21000=999+9×10=1089
堆排序的准确比较次数为:n-1+9log2n=999+9log21000=999+9×10=1089
若用冒泡排序也较快,最多耗费比较次数为(n-1+n-2+……+n-10)=10n-55=10000-55=9945(次)
4. 答: 0112112343
5. 答: 要考虑递归时占用了栈空间,但递归次数最多不超过树的高度,所以空间复杂度为O(log2n)
五、 算法设计题
1.解:提示:堆的定义是:ki<k2i和K2i+1
void SortA(sqlist &A, int n)
{ if(n==0) return(0); //空表
if (a[1]<a[2])
{ for( i=1; i2; i++) if (a[i]>a[2*i]|| a[i]>a[2*i+1])return(-1);
return(minleap)
};
else
{ for( i=1; i<=n/2; i++) if (a[i]<a[2*i]|| a[i]<a[2*i+1])return(-1);
return(“maxleap”)
};
}
2. 要用层次遍历以及队列来处理,可以增设一个宽度计数器,在统计完每一层的结点个数之后,再从计数器中挑出最大值。
typedef struct {
BTNode node; int layer;
//layer是结点所在层数
} BTNRecord, r ;
int Width(Bitree T ){ //求树宽
int count[ ]; //增开count向量,存放各层对应的结点数
InitQueue(Q); //队列初始化,Q的元素为BTNRecord类型
EnQueue(Q,{T, 0}); //根结点入队, 0 表示count[0],下标值
while(!QueueEmpty(Q))
{ DeQueue(Q, r); //结点出队
count[r.layer]++; //出队时再把结点对应层的计数器加
if(r.node->lchild) EnQueue(Q,{r.node->lchild, r.layer+1});
if(r.node->rchild) EnQueue(Q,{r.node->rchild, r.layer+1});
} //按层序入队时要随时标注结点所在层号
h=r.layer; //最后一个队列元素所在层就是树的高度
for(maxn=count[0], i=1; h; i++)
if(count[i]>maxn) maxn=count[i]; //求出哪一层结点数最多
return (h*
maxn)} // Width
⑦ PV,访问和访问者的区别
在GA上,每个页面每次加载将被记为一次PV。举例来说,一次用户访问页面顺序为: 页面A->页面B->页面A,然后离开了你的站点,那这次用户访问(Visits)的PV总计为 3次。
2.
一次用户访问(Visits)(或会话(Session))是一系列浏览器和网站的相互作用。关闭浏览器或者在网站停留30分钟而无任何操作将结束这次用户访问(Visits)。
举例来说:一个用户访问Google
Store,设置了GA检测的网站。当他访问第二个网页时接到了一个电话,他对着电话讲了31分钟,期间没有任何对网站的操作,电话结束后,他在继续在网站上进行他未完成的操作,GA将把这记为他的另一次访问(Visits)或会话(Session)。注意:访问(Visits)或会话(Session)是可以互相替换使用的两个词。
3.
访问者(Visitor),一个访问者(Visitor)通过有为用户分配一个随机的用户ID并组合用户首次访问的时间戳构成的(Timestamp)GA
Visitor
Cookie来唯一标识,随机的用户ID和时间戳(Timestamp)的组合一个访问者(Visitor),够早了一个唯一的标识(ID)。
4.
总的来说PV(Pageviews)的数值大于访问(Visits),访问(Visits)大于访问者(Visitors)。举例来说1个用户可以访问2次网站共浏览了5个页面。
5. 浏览量(PageViews)和唯一身份浏览量(Unique PageViews)
浏览量(PageViews):页面累计被访问的次数,不去重,对通过GA Tracking Code进行跟踪的页面进行计数。
唯一身份浏览量(Unique PageViews):页面累计被访问的次数,对同一次访问(Visits)去重。
特别说明:刷新页面将导致浏览量(PageViews)计数增加,但不会增加唯一身份浏览量(UniquePageViews)的计数。入锅用户访问顺序是页面A->页面B->页面A,那么页面B的访问将不会被计入B的统计结果中。
⑧ 谁知道怎样设置网页打开的顺序
要是想使用起来方便,而且你经常要同时开很多页面的话,建议你换一个傲游浏览器吧,多页面,速度快,切换方便灵活。
下载网站:http://www.maxthon.cn/
⑨ 网页怎样才能有顺序打开
强烈建议用photoshop 切割成小块,然后在网页开发工具中用背景填充,不要把整个一大图全都放到网页上面。要把一整个大图放到网页上面去也是可以的,现在有很多网页也是这样做的,但是他们考虑的是他们的带宽能够满足他们使用大图的要求,所以他们可以用,你的网速慢的,当然不合适用了,好好学学photoshop切片。
(
ps里切片就是用来切割图像用的。
切片分两种,一种是用户切片,就是用户用切片工具在图象上拉出来的切片,另一种就是衍生切片,是由用户切片衍生出来的。
在切片名称上名击选编辑切片,会弹出来了个对话框,具体如下
切片类型:图像,指这个切片输出时会生成图像,反之输出时是空的
名称:为切片定义一个名称
URL:为切片指定一个链接地址
target:在哪个窗口中打开
x,y指切片的左上角的坐标,
w,h指切片的长度和宽度,你可在自己定义节的长和宽。
另外你还可以选切片工具在图象上右击选择切割切片来分割图像,可以按指定长宽,也指指定在长度和宽度上等分来分割。
一切做完后,选文件,保存为web所用文件格式,保存后在文件所在的地方有个叫image的文件夹,里面包含了所有输出为图像的切片。
注意一点的是,cmyk模式的图片在网页上是看不到的。
)网上面有很多这方面的资料的你去查查看啊
强烈建议你去网上下载一些现成的模板看看人家是怎么切的。
网页的网格不一定都用table表格标记,还可以用div等.非常好控制的。
多研究啊,玩的多了就知道了。
祝你好运!