CSK.Blog--个人原创Weblog

数据结构课程实践

这个学期的数据结构课终于告一段落了,虽然数构我高中就看过一些,但现在学好了还是觉得这是门比较复杂的学科。今天附上的就是这门课的每章的大作业。 虽然我不想对学校这门课作太多评价,感觉上的很不好,而且其实没有多少人是自己完成作业的(其实那应该是学校造成的)。但如果每次每道题目都能去做,尤其是那些打星号的题目也作的话,那的确能学到不少知识的。 我附上的文件是我的作业代码,当然我放上来的目的不是为了让大家抄袭,而且也不可能,因为关键代码我都留有个人信息。主要目的有这几个: 1.每次大作业对我都是个相当不好受的经历,每次都要花2-4天的时间去完成(当然我可以保证作业质量)。特别是最近刚完成的图那一章的作业更是令我痛苦。每次大作业其实已经不亚于编写Stereoic一半的工程量了。同时里面大部分题目我都尽力做了,除了AVL树和AOV网络求所有可能的拓扑序列这2道外。所以即使作业中仍有不足,我相信能给各位起到一些微弱的参考意义可已经足够了 2.我编写作业过程中尽力以符合工程强度的要求来书写代码,而不是简单的应付作业,所以其中每个组建,每个数据类型都可以立刻用于其他的实际应用中,同时可以保证运行的效率和健壮性。 这一套作业集是自成体系的,比如前面实现的双向链表,堆栈,将会在后面的使用中用到。 作业中已经提供的现成数据结构有: 双向链表,单链表,和他们的相关常用操作函数 多项式类,支持多项式乘法和加法 基于链表的队列和堆栈 基于数组的共享堆栈 带有父节点指针的二叉树 BST树 基于多重邻接表的无向图、基于十字链表的有向图 基于数组的并查集 二叉树的前序、中序、后序、广度优先遍历算法 图的广度、深度优先算法 图的KRUSKAL \ Dijkstra算法 有向图求解强连同分量的算法 以上的类型和相关算法在作业中是以单独的类形式封装的,同时以独立的头文件保存。所有代码采用C++模版。程序没有采用任何STL元素,同时支持异常处理。 正如我前面说的,实现数据结构并非是什么轻松的事,所以如果需要也可以采用我现成的代码来实现更高级的功能,而不需要花大力气去实现原始结构了。至于具体如何大家还是开代码吧。 同时程序中还附上一个自己写的将二叉树打印成文本形式的函数,这个在编写二叉树相关的程序是使相当直观的。比如下面就是函数直接显示的一颗BST的画面:
==================Asc Tree View===================
       H
      / \
   D       J
  / \       \
 A   F       K
  \
  B
================== End Of View ===================

好了不说废话了,附上一次作业程序的运行画面和下载地址:

Data Structure Act 5 Demos Designed By CSK(www.csksoft.net)

 ---------------------------------------- Please Select Demos:

[1].Get Strongly Spanning Graphs(Problem 1,2)

[2].KRUSKAL algorithm Demo(Problem 1,3)

[3].Dijkstra algorithm Demo(Problem 1,4)

[4].DFS & BFS Demo(Problem 1,4)

[0].Exit Load Demo Num:

=============================

Act 1 Problem 2:Multiply two polynomials

=============================

Would you like to use the default two polynomials?[Y/N]y

the first default polynomial is +7x^2+3.5x^3+2x^4+2x^9

the second default polynomial is +2.3x^2+4.4x^3+1x^4+6x^10

请按任意键继续. . .

polynomial1 * polynomial2 = +16.1x^4+38.85x^5+27x^6+12.3x^7+2x^8+4.6x^11+50.8x^1 2+23x^13+12x^14+12x^19

----------------------------

 Demo Finished

请按任意键继续. . .

我的实践作业下载:

http://www.csksoft.net/data/legacyftp/Products/APP/DataStructProduct_BY_CSK.rar

 

 原题下载(可能SJTU有版权..):

ftp://FTP_visitor:visitor@ftp.csksoft.net/Public/Article/DataStruct_Instruction.rar

 最后真心祝愿每一位将要考数构的朋友都能通过

利用动态修改API函数创建“同名”文件及其利用

作者该文章保留对文章的版权,转载时请注明出处。 文章中需要WinFileKiller工具,你可以在我的blog:blog.csksoft.net找到说明文章和下载地址 工具下载地址:[url]http://www.csksoft.net/blog/post/11.html[/url] 不要被标题那拗口的文字弄晕了,不过用这种办法可以做很多事情哦~~ 首先要从和一个朋友的对话说起:他曾经在用FlashGet下载文件时候突然发些在桌面上产生了类似于这样的两个文件 download.rar download.rar. 注意第二个文件名后面有一个点"."。我一开始也没觉得有什么大不了的,但后来他对我说这两个文件中只能删除其中一个,假设删除了"download.rar."。这是奇怪的事情发生了:留下的“download.rar”或自动更名成为“download.rar.”。然后就删不掉了。 我不知道为什么FlashGet会产生这样的文件,但当时我的朋友正苦于想办法删除那两个文件,于是我想到了以前发布过的WinFileKiller,就是那个用来创建con.txt的工具(请参见[url]http://www.csksoft.net/blog/post/11.html[/url]),毕竟那个是通过修改内核进行工作的,可能管用,于是就传给他,用里面的删除功能。果然有效!文件被删掉了。 后来经过我研究,WinFileKiller还可以创建这样的文件:即文件名以"."作为结尾。同样这样的文件是用正常办法无法删除的。 不过如果问题就仅仅如此简单那也就罢了。下面就来说说这个以"."结尾的文件的一些有趣的问题: 除了上面所说的无法删除和自动更名以外,如果你在创建一个前面文件名字相同,但没有最后的"."的文件,比如: file.txt file.txt. 你会发现它们2者均能正常访问,如果用记事本修改其中一个的数据,那个打开另外一个文件时,会发现显示出来的数据是相同的! 当然还有更有趣的现象,那就是能创建出“同名”的文件(对于这个的解释后面会详细说明) 这是在windows explorer里面显示的情况: 上面的图绝对不是我处理出来的哦。其实只要在explorer里面把test1.txt.改名为test1.txt即可。但我是给重名文件加上引号的,因为这种重名现象很不稳定,你只要刷新下explorer显示就会回到前面的状态了。 但我不是要重点说这个的,现在就来分析下产生这些现象的原因吧。 首先在explorer中是无法直接创建以"."结尾的文件的:比如我要创建"file.txt.",如果起先没有"file.txt"这个文件,那么当你在创建文件输入文件名"file.txt."以后,系统会自动为你改名,你实际就创建了"file.txt"。对于原先存在"file.txt"的情况,当你要创建"file.txt."以后,系统就会提示你有同名文件存在。 可以说是系统把最后面的"."给略去了,这样正好能解释上面的现象。那为什么要略去呢?我们来研究下文件系统吧。 一般文件名分为标题名和扩展名两部分,这大部分人是知道的,比如上面的file.txt。他的标题名是file,扩展名是txt。这没问题,那么请问中间的"."属于什么呢?可能只能算是分割符吧。 但实际上文件系统中文件名是不保存分割符"."的,所以上面的file.txt在磁盘上其实就记录成下面的形式 file txt。其中空格可能是用一个0字节来将2部分分割开来了(当然本文不是要论述文件系统的,具体解释请参考资料)。 所以上面的“file.txt”,实际上那个"."是不记录在文件系统里面的,只是在显示的时候由文件系统负责加上去了而已。 知道了这点那么我们就来研究“file.txt.”这样的文件: 按照规定,扩展名部分是文件末端到由右向左出现的第一个"."位置的部分,如果没有出现".",则表示没有扩展名。 于是得出的结论是上面这个“file.txt.”是没有扩展名的。按照上面的说法,文件系统中他的记录形式可以是: file.txt<分割字节><空字符串> 也就是说最后面的"."是被去掉也是无所谓的。但他和“file.txt”实际上不是同名的文件。 但是我们知道除了文件系统内部,一般程序都是用以“.”作为分割符的文件名的,对于普通程序,由于略去了最后的“.”,“file.txt.”和“file.txt”在字符串形式上就成了同名文件。 如果你打开了“file.txt.”,由于略去了最后的".",实际上最后访问了“file.txt”。这就是为什么修改了其中的一个文件,另外一个文件就会跟着改变的原因。 而对于文件的删除,由于2个文件的等效性,无论删除哪一个,实际上都是“file.txt”被删除。所以总会留下那个“file.txt.”,因此就会感觉是自动被改名了。 同样,如果再想删除留下的那个“file.txt.”,因为实际要删除的是“file.txt”,但这个文件已不存在了,所以系统当然就会报错,那也就无法删除了。 这样一来,上面的问题就解释好了,不过为什么系统会显示file.txt.而不把"."在显示中略去的原因我还没有弄清楚。 这里顺便说一下以前看到的建立带有"\"文件夹的办法,大家还记得创建的方法吗? md c:\aa..\ 为什么在文件夹后面要带上“.”。同时建立的文件夹也和我这里说的带有点的文件具有相同的性质!后来经过我反汇编CreateDirectoryW API发现,其中调用完RtlDosPathNameToNtPathName_U以后,没有对文件名正确性进行检查。这和我的WinFileKiller修改的目的一致:绕过了正确性检查。 而我尝试用WinFileKiller建立如下文件“file..\”。但失败了,“\”在RtlDosPathNameToNtPathName_U调用完毕以后就被略去了,在CreateDirectoryW 中也是如此(这是说的是WinNT内核下面的情况) 所以我猜测其实md c:\aa..\是建立了以“.”作为结尾的文件夹而不是先前认为的带有“\”。 呵呵,扯远了。 下面就来说说利用的问题。 接着上面说的“file.txt.”和“file.txt”。因为按照常规的操作,实际上都只是“file.txt.”这个文件被访问,所以“file.txt.”可以被认为是“中立”了。 但是如果我们想办法把数据写入到其中,在需要时在通过特殊手段读取出来不是很好玩吗? 比如我把很重要的数据注入“file.txt.”,又附上“file.txt”里面存着无关的数据。这样可以很好的保护自己的信息,别人即使打开“file.txt.”,那也是在看“file.txt”得文件,而要删除“file.txt.”,那也是删除了“file.txt”,呵呵,很有趣不是? 如果有种病毒能利用这个原理复制自己的话,那我想目前所有的杀毒软件都会失效^_^ 对于这种文件的制作和数据植入我已经在WinFileKiller里面实现了,具体办法可以看[url]http://www.csksoft.net/blog/post/11.html[/url]。对于写入数据其实就是用同样办法修改MoveFile API。 说下简单的文件注入: 启动了WinFileKiller以后,选择2:"copy a File".此时按照提示,现输入要注入数据的源文件路径,然后输入带有"."结尾的文件路径即可。 其实这只是利用了文件系统的一些运作机制而已,并无高深技术。 本文适用于windowsXP和win2k,理论上支持winNT内核系统。测试环境winxp sp2_RTM

[开源][下载]VC工程转化器

VS.net 2003出来以后,我第一感觉就是今后不太会使用VC6.0了,因为操作很人性(当然VC6的编译器好)。但有个问题时有时候你的工程要在别人机器上打开,比如我现在学数据结构要交作业。而对方用VC6就打不开VS.net2003的程序了。 现在VS.net 2005又出来了,但同样2003打不开2005的工程。这时候就要用到工程转化器了。 其实2005->2003的转化不难,改几个版本信息就可以,但VS.net->VC6的转化就要涉及重新翻译的问题。以前国外有人写了个命令行的2003->VC6的转化器,但有一定bug,同时操作不方便,所以我就做了修改,同样也是开源的^_^

 

下载地址:

http://www.csksoft.net/data/legacyftp/Products/APP/UnPrjConvertor.rar

源代码:

http://www.csksoft.net/data/legacyftp/Products/APP/SRC_AllVersionPrj.rar

 

 

 

[下载]PicPicker

这就是游戏的画面,用Flash编写的,其实游戏本身是很老的一种记忆翻牌游戏,但相信它的画面和刺激的音乐能够吸引你的兴趣哦 这个游戏原先是为了计算机协会迎新大会时现场游戏特别做的,但做好发现很好玩,我一度因为觉得好玩拖延了开发周期^_^ 不说废话了,下载地址:

http://www.csksoft.net/data/legacyftp/Products/games/PicPicker.rar

 

[下载]你会创建c:\con.txt吗?windows文件系统漏洞

呵呵,正常来说带有con、prn、com1这样字眼的文件或目录是不能创建的(原因自己找),但我想到了以前在安全焦点的一篇文章,是教你创建带"\"的文件夹的。当时的方法是用控制台命令(如果你叫dos命令那是不标准的)mkdir csk..\这样的语法创建的。看来这是windows一个文件系统的漏洞了,没错…… 我后来就在想其中的原理,可能你会发现像上面的csk..\在创建后是csk.,而他实际被windows解释为访问mkdir csk.\的目录。看来有字符在创建时被略去了。而一次偶然机会我发现mkdir C:\con\是成功的,在c下面出现了c:\con文件夹,而且删不掉……呵呵,有一个bug…… ... ... 点击下载:ftp://FTP_visitor:visitor@ftp.csksoft.net/Public/Products/Crack/WinFileKiller.rar

[下载]windowsXP sp2 TCP并发数限制破解程序

似乎最近身边的人都在玩破解,我也不例外…… 如果你不知道我在讲什么那先听我解释,如果知道那就 jmp FAR PTR [下载] (呵呵,最近昏头了) 事情是这样的:如果你发觉自己机器自从装了XP sp2补丁后发现上网速度慢了,尤其是Bt、eMule、P2p这种软件的下载速度变得慢了,那很有就是我要说的这个原因。 简单的说,在sp2中,microsoft为了防止windows因遭受冲击波等病毒的攻击而造成的网络瘫痪,“好心”的将TCP/IP的并发连接数限制在十个(说的通俗点就是同...

[下载]去除时间间隔限制的QQ挂机程序

不知是谁出的主意,QQ多了一个当时看似无关紧要的功能:等级(或者称经验)。不过我估计一方面可能是为了针对当时的其他及时聊天软件的对策,因为网易Popo就有经验和等级这回事。然而Tencent聪明之处就在于他将QQ等级与一些原先只有会员(在我看来那是浪费钱啊~~)才能享有的功能挂钩起来,就比如自定义头像。 ... 不说废话了,文件在此! http://www.csksoft.net/data/cracked_qq_yfk.rar

快来下载!csksoft的sony ericsson手机主题forK700!

我闲来无事就用sony ericsson提供的工具和IR作了这个主题。 大家感兴趣的可以下载! 下载地址在csksoft flash网站
分页:[«][1][2]3[»]

日历

<< 2015-6 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Copyright Shikai Chen 2000-2012. Powered By Z-Blog(CSK Modified)