数据结构
司青-已停止更新
本博客已停更;
展开
-
【ACM】杭电1022:Train Problem I
分析:明显是一个栈的问题。利用栈后进先出的特点模拟火车进站出站的过程即可轻松解决。我的思路是:用2个字符数组保存火车车厢的序列。首先比较出站后(记为s2)数组和出站前 (记为s1)数组的第一个元素,会有以下3种情况:1、元素相等,则说明这节车厢可以进站后马上出站,直接输出in,out,不需要执行真正的压栈操作。(当然你想压再出一下也行。。不过那是没有任何意义的)2、元素不相同时原创 2012-10-28 22:57:56 · 1497 阅读 · 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 · 1093 阅读 · 0 评论 -
【图】图的邻接矩阵存储和广度、深度优先遍历
示例:建立如图所示的无向图由上图知,该图有5个顶点,分别为a,b,c,d,e,有6条边.示例输入(按照这个格式输入):56abcde0 1 10 2 10 3 12 3 12 4 11 4 1输入结束(此行不必输入)注:0 1 1表示该图的第0个顶点和第1个定点有边相连,如上图中的a原创 2012-11-18 21:52:36 · 2102 阅读 · 0 评论 -
【图】图的邻接表存储和广度优先遍历
示例:建立如图所示的无向图由上图知,该图有5个顶点,分别为a,b,c,d,e,有6条边.示例输入(按照这个格式输入):56abcde0 10 20 32 32 41 4输入结束(此行不必输入)注:0 1表示该图的第0个顶点和第1个定点有边相连,如上图中的a->b所示原创 2012-11-19 15:36:35 · 2336 阅读 · 0 评论 -
【栈】铁轨问题
经典栈问题!第一次做的时候思路太混乱了,现在看了刘汝佳的书,重新整理下。#include #include /******************************************************************* 用数组A存储调整前的车厢号序列,用数组B存储调整好的车厢号序列* 用栈stack存储存放在中转站C中的车厢* 用ix_A指原创 2012-12-03 17:49:10 · 1675 阅读 · 0 评论 -
【字典树】杭电1251 : 统计难题
字典树的基本功能是用来查询某个单词(前缀)在所有单词中出现次数的一种数据结构,它的插入和查询复杂度都为O(len),Len为单词(前缀)长度,但是它的空间复杂度却非常高,如果字符集是26个字母,那每个节点的度就有26个,典型的以空间换时间结构。统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 13原创 2013-02-05 16:07:05 · 1404 阅读 · 0 评论 -
【字典树】杭电1671 : Phone List
Phone ListTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5747 Accepted Submission(s): 1973Problem DescriptionGiven a list of原创 2013-02-05 20:46:40 · 1732 阅读 · 0 评论 -
【字典树】Message Flood - 第9届中山大学程序设计竞赛预选赛
Message FloodTime 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 · 1313 阅读 · 0 评论 -
【数据结构】线性表之链表--C++语言描述
插入、删除结点的代码有点多,但这样提高了代码的可读性,且不增加时间复杂度,不会影响程序性能#include using namespace std;templateclass CList;templateclass Node{ friend CList;private: T m_data; Node *m_pNext;};templateclass CList原创 2012-09-02 01:46:16 · 1296 阅读 · 0 评论 -
【并查集】亲戚(Relations)
题目: 亲戚(Relations)或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥的表姐的孙子。如果能得到完整的家谱,判断两个人是否亲戚应该是可行的,但如果两个人的最近公共祖先与他们相隔好几代,使得家谱十分庞大,那么检验亲戚关系实非人力所能及.在这种情况下,最好的帮手就是计算机。为了将问题简化,你将得到一些亲戚关系的信息,如同Marry和Tom是亲戚,T原创 2013-02-14 19:03:57 · 2276 阅读 · 0 评论 -
【数据结构】线性表之数组---C++语言描述
感觉用C++中的构造函数、析构函数等类的特点来描述一些数据结构更加易读,更加合理,便捷。但有一个问题,编译器不支持模板的分离编译,很不舒服 #include using namespace std;templateclass CArray{public: CArray(const int &iMax); CArray(); ~CArray(); void Creat原创 2012-09-01 07:23:13 · 1392 阅读 · 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 · 10765 阅读 · 0 评论