摘要:
1 /************************************************************************/ 2 /* 3 题目: 4 输入一个整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每一个子数组都有一个和。 5 求所有子数组的和的最大值。要求时间复杂度为O(n)。 6 例如: 7 输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,-4,7,2。 8 因此,输出为该子数组的和18. 9 10 分析:11 可以使用Max_Sum来保... 阅读全文
摘要:
1 /* 2 * 题目: 3 * 设计包含min的栈 4 * 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 5 * 要求函数min、push以及pop的时间复杂度都是O(1) 6 */ 7 8 /* 9 * 分析: 10 * 自己曾经用了一天时间,也没有想出,后来看了别人的分析才知道比较好的解答方法。 11 * 这道题是典型的用空间复杂度换时间复杂度的问题,关键点在于如何保存最小的元素。 12 * 既然要求了时间复杂度低,那么就需要较高的空间复杂度,方法是设计另外一个平行栈,用来保存当前... 阅读全文
摘要:
题目参看csdn上的一个很经典的帖子,http://topic.csdn.net/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html?60918。但代码都是自己使用C语言写的,思路基本上都是自己想出的,如果参考了帖子上别人的思想,则会注明。 1 /* 2 * 将二元查找树转变为排序的双向链表 3 * 题目:输入一颗二元查找树,将该二元查找树转换成一个排序的双向链表 4 * 要求不能创建任何新的结点,只调整指针的指向。 5 * 如: 6 * 10 7 ... 阅读全文
摘要:
*代码参考了《黑客防线2011精华奉献本上册》的文章《U盘打造开机锁》。原理 U盘是一种即插即用的可移动设备(PnP),它具有VID、PID以及产品序列号等可以标识其身份。引用一下文章来浅要介绍一下VID与PID的相关内容: 不同的U盘具有不同的序列号,因此我们可以通过识别U盘的序列号来判断该计算机上是否插有该U盘,如果没有则会强制关机,如果有U盘的话,则可以进行操作。这就是通过U盘来实现开机锁的基本原理。相关内容 开发环境是VIsual Studio 2005+WDK7600。需要注意的是WDK是必须的。因为程序中需要用到WDK中的一些头文件与库文件。读者可以自行去微软网站下载相关软件... 阅读全文
摘要:
线性表的定义 线性表是最简单的数据结构,一个线性表是由n个数据元素的有限序列。具有下列特点: (1)存在唯一一个被称为“第一个”的数据元素; (2)存在唯一一个被称为“最后一个”的数据元素; (3)除了第一个之外,集合中的每一个数据元素均只有一个前驱; (4)除最后一个之外,集合中的每一个数据元素均只有一个后继。线性表的实现 下面在Visual Stduio C++ 6.0环境下对线性表的实现进行描述。由于线性表中的数据元素可以为许多类型(int、float、char等等),为了方便起见,只介绍int型作为线性表的数据元素的类型的线性表。并且在《数据结构(C语言版)... 阅读全文
摘要:
前言 由于自己已经大四,开始决定写这个博客,记录下自己每一天一点一滴的进步,希望自己的收获能与大家一同分享。数据结构这门课是我在大二上学期所学的,由于之前学习C语言的时候已经接触了常用的一些数据结构,加之自己以前也看过不少数据结构方面的书,因此学习起来比较轻松。马上要参加2012年的研究生入学考试,数据结构作为专业课的一门,就要重新开始复习了。因此通过记录这个博客,来每天更新自己的复习成果。这是一个系列,希望自己能够坚持下去。所用的教材是清华大学出版的《数据结构(C语言版)》。基本概念 数据(data):客观事物的符号表示。【CS】指所有能输入到计算机中并被计算机程序处理的符号的总称。【注.. 阅读全文