数据结构
文章平均质量分 64
weiyong1999
改变思想、提升能力、不断的自我丰富,此乃人生之一大乐趣。
展开
-
排序算法(插入排序、shell排序、冒泡排序、选择排序、合并排序、堆排序、快速排序、计数排序、基数排序、桶排序)
排序算法分两种: 1.比较排序,时间复杂度最少达到O(n*lg n),主要有:插入排序,冒泡排序,选择排序,合并排序,堆排序,快速排序等。 2.非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。 输入:n个数 输出:输入序列的一个重排列,使a'1 插入排序(有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍原创 2012-11-08 21:12:46 · 2735 阅读 · 0 评论 -
KMP算法
KMP算法使用来弥补BF算法的不足(避免不必要的回溯)。避免的方法是由模式串决定(模式串自解),而不是又目标串决定。 http://poj.org/problem?id=3461 #include #include #define M 10010 char strSour[M],strTarget[1000010]; int next[M]; int count; void ge原创 2012-11-10 22:35:33 · 284 阅读 · 0 评论 -
走迷宫
一个网格迷宫由n行m列的单元格组成,每个单元格要么是空地(用1表示),要么是障碍物(用0 表示)。找出从起点到终点的最短移动序列,其中U,D,L,R,分别代表往上,下,左,右移动到相邻单元格。任何时候都不能在障碍格中,也不能走到迷宫之外,起点和终点保证是空地。n,m input:3 3 101 101 111 output:6DDRRUU原创 2012-11-10 17:21:56 · 390 阅读 · 0 评论 -
二叉树层次遍历
输入一颗二叉树,你的任务是按从上到下、从左到右的顺序输出各个结点的值。每个节点都按照从根结点到它的移动序列给出(L代表左,R代表右)。在输入中,每个结点的左括号和右括号没有空格,相邻节点之间用一个空格隔开。每棵树的输入用一对括空括号()结束(这对括号本身不代表一个结点),如图所示: 注意,如果从根节点到某个叶子结点的路径上有的结点没有输入中给出,或者给出了超过一次,应当输出-1,。结点个数不超过原创 2012-11-08 21:32:39 · 919 阅读 · 0 评论 -
链表的应用:计算每个作业的运行时间
问题描述 在一个网络计算系统中,有很多台计算机。每台计算机分别作为一个资源,用一个由‘0’~‘9’的数字组成的字符串表示。当要计算一个任务时,网络计算系统自动从空闲的计算机中找一台,并在这台计算机上完成计算任务。每个计算任务用一个以小写字母打头、并包含有下划线字符‘_’的唯一的字符串表示。 网络计算系统用一个运行日志文件记录了所发生的每个“事件”。日志文件是文本文件,每个事件占用其中的一行。共原创 2012-11-16 20:06:53 · 660 阅读 · 0 评论 -
数字三角形 (动态规划与递归)
问题描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路 径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的任务就是求 出最佳路径上的数字之和。 注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的数或者右边的数。 输入数据 输入的第一行是一个整数N (1原创 2012-11-16 20:09:24 · 654 阅读 · 0 评论 -
线索二叉树的实现
实现需要注意的地方: 1、对指针的操作不太熟悉的朋友,可以使用c++提供的引用方式实现,int i;int *p;int **pi;p=&i;pi=&p; **pi、*pi、*p的操作(修改)分别是对那些变量有影响?你能回答么? 2、知道为什么要定义BiThrNode和*BiThrTree类型么? 3、如果还有疑问欢迎一起探讨。 #include #include typ原创 2013-04-12 19:36:54 · 575 阅读 · 0 评论 -
八皇后问题(递归、非递归——回溯)
首先,让我们先来温习递归: 调用前 一个函数的运行期间调用另一个函数时,在运行被调用函数之前,系统需要完成3件事情: (1)将所有的实参、返回地址等信息传递给被调用函数保存; (2)为被调用函数的局部变量分配存储区; (3)将控制转移到被调函数的入口。 调用中 而从被调用函数返回调用函数之前,系统也应完成3件工作: (1)保存被调函数的计算结果;原创 2012-11-16 20:29:05 · 2016 阅读 · 2 评论 -
分类的信息扫描
/** 分类的信息扫描算法1: 1、按照分类的id顺序开始(主分类id必然在子分类的前面) 2、用数组结构记录所有分类信息——为避免分类的层次过深不好寻找某分类的信息,利用类似线索二叉树的扫描方式,实现快速定位分类,一个分类关系的数组(这个是有层次的),一个是线性的数组(一维的就可以了,方便索引)。 3、扫描到主的数据就添加到关系数组的顶级层 4、扫描到子的数据就添加到关系数组的顶级层的原创 2013-08-05 14:46:25 · 596 阅读 · 0 评论