数据结构
司青-已停止更新
本博客已停更;
展开
-
【ACM】杭电1022:Train Problem I
分析: 明显是一个栈的问题。利用栈后进先出的特点模拟火车进站出站的过程即可轻松解决。 我的思路是: 用2个字符数组保存火车车厢的序列。首先比较出站后(记为s2)数组和出站前 (记为s1)数组的第一个元素,会有以下3种情况: 1、元素相等,则说明这节车厢可以进站后马上出站,直接输出in,out,不需要执行真正的压栈操作。(当然你想压再出一下也行。。不过那是没有任何意义的) 2、元素不相同时原创 2012-10-28 22:57:56 · 1471 阅读 · 0 评论 -
【二杈树】非递归建立二杈树
思路: 设置一个标记变量flag并初始化为1. flag = 1表示现在需要创建当前结点的左孩子,2表示需要创建右孩子,3则表示当前结点的左右孩子都已经创建完毕,需要执行出栈操作,直到当前结点不是父结点的右孩子为止。 以先序创建如图所示二杈树: PBTree create() { char ch[20]; scanf("%s",ch); int len = strlen(c原创 2012-11-16 12:33:55 · 1073 阅读 · 0 评论 -
【图】图的邻接矩阵存储和广度、深度优先遍历
示例:建立如图所示的无向图 由上图知,该图有5个顶点,分别为a,b,c,d,e,有6条边. 示例输入(按照这个格式输入): 5 6 abcde 0 1 1 0 2 1 0 3 1 2 3 1 2 4 1 1 4 1 输入结束(此行不必输入) 注:0 1 1表示该图的第0个顶点和第1个定点有边相连,如上图中的a原创 2012-11-18 21:52:36 · 2036 阅读 · 0 评论 -
【图】图的邻接表存储和广度优先遍历
示例:建立如图所示的无向图 由上图知,该图有5个顶点,分别为a,b,c,d,e,有6条边. 示例输入(按照这个格式输入): 5 6 abcde 0 1 0 2 0 3 2 3 2 4 1 4 输入结束(此行不必输入) 注:0 1表示该图的第0个顶点和第1个定点有边相连,如上图中的a->b所示原创 2012-11-19 15:36:35 · 2290 阅读 · 0 评论 -
【栈】铁轨问题
经典栈问题!第一次做的时候思路太混乱了,现在看了刘汝佳的书,重新整理下。 #include #include /****************************************************************** * 用数组A存储调整前的车厢号序列,用数组B存储调整好的车厢号序列 * 用栈stack存储存放在中转站C中的车厢 * 用ix_A指原创 2012-12-03 17:49:10 · 1654 阅读 · 0 评论 -
【字典树】杭电1251 : 统计难题
字典树的基本功能是用来查询某个单词(前缀)在所有单词中出现次数的一种数据结构,它的插入和查询复杂度都为O(len),Len为单词(前缀)长度,但是它的空间复杂度却非常高,如果字符集是26个字母,那每个节点的度就有26个,典型的以空间换时间结构。 统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 13原创 2013-02-05 16:07:05 · 1353 阅读 · 0 评论 -
【字典树】杭电1671 : Phone List
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5747 Accepted Submission(s): 1973 Problem Description Given a list of原创 2013-02-05 20:46:40 · 1695 阅读 · 0 评论 -
【字典树】Message Flood - 第9届中山大学程序设计竞赛预选赛
Message Flood Time Limit: 1500MS Memory limit: 65536K 题目描述 Well, how do you feel about mobile phone? Your answer would probably be something like that "It's so convenient and benefits p原创 2013-02-20 13:25:43 · 1278 阅读 · 0 评论 -
【数据结构】线性表之链表--C++语言描述
插入、删除结点的代码有点多,但这样提高了代码的可读性,且不增加时间复杂度,不会影响程序性能 #include using namespace std; template class CList; template class Node { friend CList; private: T m_data; Node *m_pNext; }; template class CList原创 2012-09-02 01:46:16 · 1257 阅读 · 0 评论 -
【并查集】亲戚(Relations)
题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥的表姐的孙子。如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及.在这种情况下,最好的帮手就是计算机。 为了将问题简化,你将得到一些亲戚关系的信息,如同Marry和Tom是亲戚,T原创 2013-02-14 19:03:57 · 2231 阅读 · 0 评论 -
【数据结构】线性表之数组---C++语言描述
感觉用C++中的构造函数、析构函数等类的特点来描述一些数据结构更加易读,更加合理,便捷。但有一个问题,编译器不支持模板的分离编译,很不舒服 #include using namespace std; template class CArray { public: CArray(const int &iMax); CArray(); ~CArray(); void Creat原创 2012-09-01 07:23:13 · 1370 阅读 · 0 评论 -
利用广度优先遍历(BFS)计算最短路径 - Java实现
我们用字符串代表图的顶点(vertax),来模拟学校中Classroom, Square, Toilet, Canteen, South Gate, North Gate几个地点,然后计算任意两点之间的最短路径。 如,我想从North Gate去Canteen, 程序的输出结果应为: BFS: From [North Gate] to [Canteen]: North Gate原创 2015-03-15 02:46:54 · 10703 阅读 · 0 评论