2008年12月8日星期一

双系统、杂分区的一点经验

  • 首先假设你已经用PQ这种权威分区工具分完并格式化多个主分区+扩展分区、逻辑分区(请有经验的装系统爱好者来做这件事,而且需要安装系统的分区尽量不要格式化)。
  1. 装系统顺序不多说,是先Windows再Linux,否则需要进行多余的步骤。最重要的是,正常安装XP(原版CD而非Ghost版等修改版)时如果检测到你的硬盘含非ntfs、fat32主分区(也可能只是检测第一个主分区)的话你将无法进入安装界面,会提示你硬盘有错(具体是什么忘了),而且没有很好的解决方法,国外网估计能找到答案。所以请先删除Linux分区再安装XP,你用Ghost安装我没话说。
  2. 用Linux特别是Ubuntu发行版中自带的分区软件时请注意:
    当你安装Ubuntu到了分区这一步时,采用他的建议一般不是你想要的方案,有些时候还会将你的分区一分为二,强烈建议手动。手动时也不要太豪放乱改大小(Resize),特别是主分区和扩展分区两者之间的resize,的确你想怎么改就怎么改,但如果你的分区本来就有点复杂,这时的修改看上去没什么事,实际上会将你的分区结构改得很乱,不利于以后的维护。(还是Suse好,分区建议什么的都比较合理)
  3. 如果你犯了第二点中所说的错误,而且你用的是XP,请不要随意用XP中自带磁盘管理(Disk Management),牵一发而动全身,我删除了第二个主分区(linux分区)时中了招,磁盘管理直接将我的扩展分区全部删除。。这是第二次了遇到了,第一次是把扩展分区删了一半。
  • 加点关键字方便robot搜到:恢复误删分区,恢复分区,撤销删除分区,格式化后恢复文件
  • 如果你中了上面第3点所说的招,或者自己不小心删除了分区时这时不要乱动!不要再操作分区了,自己重新建立分区再用恢复文件的软件恢复资料是极其恶心的,双系统的话最好别重启(Grub所在分区没了就没法引导)。这时推荐使用DiskGenius,以前叫Diskman,这个共享软件也帮了我的大忙;Linux下可以使用TestDisk(英文版),ubuntu的默认软件源里有,suse在官网也能搜到。
  • DiskGenius能搜索并恢复分区表,即使你没备份,保存后一切同原来一样了,注意用dos工具箱中的diskfix是无法搜索到自己手动删除的分区的。
  • 如果当时真的乱动了,你也可能搜索到你想要的分区,可以用DiskGenius浏览原来的文件并恢复到其他分区上,这样你可以不用恢复分区而只恢复文件。
  • 如果删除了Grub所在分区,重启时你将无法找到操作系统,所以重启前你可以用DiskGenius重建硬盘的mbr。
  • 如果重启无法找到操作系统了,你可以用XP安装盘中的恢复控制台恢复引导,或者用含紧急引导的工具盘引导XP后执行上面那一步。
  • 估计这个帖子对大家作用甚微,希望大家的资料没有出大问题吧,数据无价啊。
  • 最后鄙视一下某些电脑生产厂商将硬盘的四个主分区用得干干净净。

2008年12月6日星期六

完全二叉树的一些判定方法

  1. 肉眼
  2. 顺序表储存
    完全二叉树的每个结点按层次遍历顺序从1编号至n,所以当1 ~ n有某一项为空时则不为完全二叉树,时间复杂度O(n)。
  3. 链表储存
    受顺序表储存的启发,在树结点结构中添加一数据域,记录当前结点编号。编号在建树时不难确定,根节点编号为1,插入结点时,若父亲结点编号为i,则左儿子编号为2*i,右儿子为2*i+1。随后进行一次层次遍历,若已遍历结点数+1不等于当前队首结点编号,则不为完全二叉树,时间复杂度O(n)。此法由于添加了编号,使结点删除操作受到限制,所以在不涉及删除操作的情况下此法比较容易实现。
    一般情况下的判定方法也不难,网上流传的是
    先要对二叉树进行层次遍历,在遍历过程中对每一个结点进行检查:
    (1)如果当前结点没有右子树,则剩下的全部结点必须既没有左子树,又没有右子树;
    (2)如果当前结点有右子树,则它必须也有左子树.
    如果同时满足(1)(2),则是完全二叉树;否则不是.
    时间复杂度同样为O(n),但没有对树的维护造成麻烦。

  4. 相信还有更好的方法,这学期的核心即是学习强大的二叉树。