数据结构
持续学习刻意练习
这个作者很懒,什么都没留下…
展开
-
单链表排序(单链表)
1、题目: Problem Description漳州师院一年一度的表白日开始咯,每个男生要拿着一束花给心仪的女生。Nana想知道自己受不受男生的欢迎。所以她想写一个程序把所有女生收到的花的数量放在一个单链表里面,再进行单链表排序,算出自己的排在第几名。 Input有多组输入数据,每组占两行:第一行输入两个整数n,m,其中(0 Outpu原创 2013-12-24 09:21:49 · 1080 阅读 · 0 评论 -
判满二叉树(二叉树)
1.题目: Problem Description设有一棵非空二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。设计一个算法,判断该二叉树是否为满二叉树。若是输出"yes",不是则输出"no"。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为扩展二叉树的前序遍历序列。 Output原创 2013-11-02 21:04:22 · 2014 阅读 · 0 评论 -
复制二叉树(二叉树)
1.题目: Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,要求复制该二叉树,并对复制得来的二叉树进行中序遍历。 Input第一行为一个整数n,表示以下有n组测试数据,每组测试数据占一行,为扩展二叉树的前序遍历序列。 Ou原创 2013-11-02 20:10:41 · 3138 阅读 · 0 评论 -
交换左右子树(二叉树)
1.题目: Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,要求编写一个算法交换二叉树中所有节点的左右子树,并输出交换后的前序遍历。 Input输入的第一行为一个整数n,表示接下来有n组数据。接下来n组,每组占一行,每行包含一个扩展二原创 2013-11-02 20:40:41 · 1848 阅读 · 0 评论 -
链接存储转为顺序存储(二叉树)
1、题目: Problem Description问题描述:设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,建立该二叉链表,要求将该二叉树的二叉链表存储结构转换为顺序存储结构,并输出各数组元素,空二叉树用'#'表示。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一原创 2013-11-02 19:50:40 · 3383 阅读 · 0 评论 -
循环队列的操作(循环队列)
1.题目: Problem Description现有一长度为n的整数序列和一最大容量为m的循环队列(用长为m+1的一维数组实现),要求将该序列中的偶数存入循环队列中;当循环队列满时,将循环队列中的所有元素全部出队,并按存入的先后顺序在同一行内依次输出,即每行输出m个元素,每个元素后输出一个空格。 Input有多组数据,每组第一行为整数序列的个数n和循环队列的最大容原创 2013-10-17 18:58:46 · 5173 阅读 · 2 评论 -
顺序存储的前序遍历(二叉树)
1.题目:Time/Memory Limit:1000 MS/32768 KSubmitted: 32 Accepted: 22 Problem Description给你一个采用顺序存储结构的二叉树,请你设计一个算法求出它的前序遍历。 Input输入数据有多组,每组的第一行为一个正数n,表示该二叉树的节点个数。接下来有n个字符,表示各个位置上的元素原创 2013-10-23 22:09:20 · 2879 阅读 · 0 评论 -
火车车厢重排(链队列)
1.题目: Problem Description一列货运列车共有n节车厢,每节车厢将停放在不同的车站。假定n个车站的编号分别为1~n,即货运列车按照第n站至第1站的次序经过这些车站。为了便于从列车上卸掉相应的车厢,车厢的编号应与车站的编号相同。这样,在每个车站只需卸掉最后一节车厢。因此,对于给定的任意次序车厢,必须进行重新排列,使其符合要求。车厢重排工作可通过转轨站完成,在转轨站中原创 2013-10-23 20:26:58 · 2488 阅读 · 0 评论 -
判括号匹配(顺序栈)
1.题目: Problem Description任意输入一个由若干个圆括号、方括号和花括号组成的字符串,设计一个算法判断该串中的括号是否配对。 Input有多组数据,每组为一个包含3类括号的字符串,串长不超过100。 Output若该串中的括号匹配输出1,否则输出0。 Sample Input([{}])([{}})原创 2013-10-15 23:39:38 · 1404 阅读 · 1 评论 -
二叉树的宽度(二叉树)
1.题目: Problem Description二叉树的宽度是指二叉树各层结点数的最大值。设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。设计一个算法,输出该二叉树的宽度。空二叉树的宽度为0。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为扩展二叉树的前序遍历序列。 O原创 2013-10-27 18:32:57 · 2257 阅读 · 0 评论 -
顺序存储转为链接存储(二叉树)
1.题目: Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用顺序存储表示。现输入其数组各元素值(空二叉树用'#'表示),建立该二叉树,要求将该二叉树的顺序存储结构转换为二叉链表存储结构,并输出其前序遍历序列。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为其数组各元素值(空二叉树原创 2013-10-27 16:37:21 · 4306 阅读 · 0 评论 -
单链表拆分(单链表)
1.题目: Problem Description已知一个字符串含有三类字符:字母、数字和其他字符。试编写算法,构成三个链表,使每个单链表中只含有同一类字符。 Input输入包含多组测试数据,每组测试数据第一行是一个T,表示有T组数据,接下来有T行,每行有有一个字符串,每个字符串长度n(0<n<=100)(字符串中可能含有空格)如果T等于零则输入结束。原创 2013-10-06 11:18:01 · 2994 阅读 · 0 评论 -
求后序遍历序列的第k个结点值(二叉树)
1.题目: Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,要求建立该二叉树,并输出其后序遍历序列的第k个结点值(假设该值一定存在)。 Input第一行为一个整数n,表示以下有n组数据,每组数据占两行,第一行为一个整数k(1原创 2013-11-02 20:14:44 · 5308 阅读 · 0 评论 -
Tree's Depth(二叉树)
1.题目: Problem Description一个名字叫Small Green的同学,很喜欢研究树的问题。某一天,他随意地在纸上乱涂乱画,画出了各不相同的二叉树,他同时在想:一颗满的二叉树的深度并不难求。但如果要求出一颗二叉树(可能不是满二叉树)的深度,那么该如何求呢? Input输入包含多个例子,每个例子的第一行为一个整数n,表示以原创 2013-11-02 20:53:27 · 1490 阅读 · 0 评论 -
求相同后缀首字符(单链表)
1、题目: Problem Description现用单链表保存字符串,假定有两个字符串存在相同的后缀,请输出该相同后缀的首字符。 Input有多组数据,每组包含两个字符串。(串长小于1600) Output输出该相同后缀的首字符。 Sample Inputloadingbeingcateat Sam原创 2013-12-22 20:03:39 · 1347 阅读 · 0 评论 -
深度优先生成树(无向图,邻接矩阵,DFS)
1、题目: Problem Description设有一连通无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利用DFS算法求其深度优先生成树(从下标0的顶点开始遍历),并在遍历过程中输出深度优先生成树的每一条边。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0原创 2013-11-22 22:35:51 · 13988 阅读 · 0 评论 -
求连通分量(无向图,邻接矩阵,BFS)
1、题目: Problem Description设有一无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利BFS用算法求其各连通分量,并输出各连通分量中的顶点。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0 Output按存储顺序的先后,输出各连通分量中的顶点,每组输出占原创 2013-12-12 18:30:38 · 6746 阅读 · 0 评论 -
邻接矩阵遍历(无向图,邻接矩阵,DFS,BFS)
1、题目: Problem Description有多组数据,每组数据第一行有两个整数n、m,(0 Input分别输出从标号为1点开始深度和广度优先搜索的序列,每个数之后有一个空格。每组数组分别占一行。 Output按存储顺序的先后,输出各连通分量中的顶点,每组输出占若干行,每行最后均有一空格,具体格式见样例。 Sampl原创 2013-12-12 15:21:06 · 2182 阅读 · 0 评论 -
广度优先生成树(无向图,邻接矩阵,BFS)
1、题目: Problem Description设有一连通无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利用BFS算法求其广度优先生成树(从下标0的顶点开始遍历),并在遍历过程中输出广度优先生成树的每一条边。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0 Output原创 2013-12-12 15:42:38 · 6126 阅读 · 0 评论 -
邻接表中判边(邻接表+无向图)
1、题目: Problem Description设有一无向图G,其顶点值为字符型并假设各值互不相等,采用邻接表表示法存储。设计一个算法,判断该无向图中是否存在某一特定边。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0 Output若下标s和t对应的顶点间有边,输出1原创 2013-12-11 20:03:40 · 3287 阅读 · 0 评论 -
加工(单链表)
1、题目: Problem Description对一串手链进行加工,起始时,该手链有n(1,2,....n)个的珠子,珠子都有颜色color(字符串,长度对手链加工的方法有4种:ADD:在手链上的末尾添加一个珠子DELETE:将手链上的第x个珠子除去REPLACE: 将手链上的第x个珠子替换掉FINISH:加工完毕,将珠子的颜色输出要求若x原创 2013-12-03 09:13:12 · 1156 阅读 · 0 评论 -
判操作序列有效性
1、题目: Problem Description假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则成为非法序列。请编写一个对该操作序列的有效性进行判断,若有效输出1,无效输出0。 Input有多组数据,每组为由I和O组成的序列,序列长度不超过50。原创 2013-12-02 13:17:38 · 1824 阅读 · 1 评论 -
求路径(二叉树)
1、题目: Problem Description假设有一棵二叉树,其结点的值是字符型,该二叉树采用二叉链表存储方式表示。输入其扩展二叉树的前序遍历序列,用于建立该二叉树,并且假设p所指结点为一给定的结点x。现要求求出根结点到p所指结点x之间的路径。我们假设这棵二叉树不为空树。 Input第一行为一个整数n,表示有n组测试实例。每组测试实例占两行:第一行原创 2013-11-14 23:18:57 · 2074 阅读 · 3 评论 -
求中序遍历序列的第一个结点值(二叉树)
1.题目: Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,要求建立该二叉树,并输出其中序遍历序列的第一个结点值。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为扩展二叉树的前序遍历序列。 Out原创 2013-11-02 20:04:51 · 5114 阅读 · 3 评论 -
二叉树的叶子节点(二叉树)
1.题目: Problem Description给你一串扩展二叉树的前序遍历序列,按输入的先后顺序输出该二叉树的叶子节点。 Input输入的第一行有一个整数N,表示接下去有N组测试数据,每组测试数据占一行,每组测试数据为一串扩展二叉树的前序遍历序列,节点数据类型为字符型,其中'#'标识该节点为空。 Output原创 2013-11-02 20:26:08 · 4888 阅读 · 0 评论 -
单链表的插入(单链表)
1.题目: Problem Description建立单链表,在第n个结点后插入指定结点,并完成遍历操作。 Input输入数据有多组,每组数据占两行:第一行有两个数字(n,m),第一个数n表示结点位置,第二个数表示指定需插入的数。后跟单链表各结点(不会超过100),以0结束一个单链表。例如:3 51 2 3 4 5 00 0遇到0 0,结原创 2013-10-05 20:51:17 · 1641 阅读 · 0 评论 -
单链表排序(单链表)
1.题目: Problem Description漳州师院一年一度的表白日开始咯,每个男生要拿着一束花给心仪的女生。Nana想知道自己受不受男生的欢迎。所以她想写一个程序把所有女生收到的花的数量放在一个单链表里面,再进行单链表排序,算出自己的排在第几名。 Input有多组输入数据,每组占两行:第一行输入两个整数n,m,其中(0 Output每组的输原创 2013-10-05 18:39:32 · 1074 阅读 · 0 评论 -
单链表的建立和遍历(单链表)
1.题目: Problem Description输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据。 Input输入数据有多组,每组数据占两行;每组第一行为一个数字N(N<=50);第二行有N个整数。 Output输出这组整数,数字之间用一个空格分隔。 Sample Input512 3原创 2013-10-04 11:30:25 · 2264 阅读 · 1 评论 -
最长相等子序列长度(顺序表)
1.题目: Problem Description给定一个有n个元素的整数数组b,b中连续的相等元素构成的子序列称为平台。设计一个算法求b中最长平台的长度。 Input第一行为一个数字m,表示下面有m组数据,每组数据包括2行;每组数据中的第一行表示数组的长度n(不会超过20,但可为空表),第二行表示数组的所有元素。 Output输出最长平台的长度。原创 2013-09-21 10:14:27 · 1872 阅读 · 0 评论 -
单链表按值操作(单链表)
1.题目: Problem Description对值递增有序的单链表进行以下操作:若表中存在值为x的结点,则将它从表中删除;否则,就往表中插入一个值为x的结点,并保持表值递增有序的性质不变(假设表中没有值相同的元素)。处理后若为空表则不输出。 Input每组数据包括3行,第一行表示单链表的长度n(不会超过50);第二行表示单链表的所有元素;第三行表示x值。原创 2013-09-27 13:00:09 · 1487 阅读 · 0 评论 -
数组的循环移位
1.题目: Problem Description对于一个给定的字符型数组循环左移i位,要求尽量不申请空间,实现“原地”操作。 Input输入的第一行为一个数字n,代表接下来有n组数据,每组数据包括2行;每组数据中的第一行为一个字符串(长度不超过50),第二行为一个数字m,代表要左移的位数。 Output循环左移后的字符型数组内容。 Sample Input原创 2013-09-11 21:46:59 · 948 阅读 · 0 评论 -
线性表的链接存储结构(单链表)的实现
#include using namespace std; template struct Node{ DataType data; Node * next;}; template class LinkList{ private: Node * first; public: LinkList(); LinkList(Data原创 2013-07-10 16:52:55 · 1118 阅读 · 0 评论 -
线性表的存储结构---顺序表的实现
#include using namespace std;const int MaxSize=100;template class Seqlist{private: DataType data[MaxSize]; int length;public: Seqlist(){length=0;}//无参数构造函数 Seqlist(DataType a[],int原创 2013-07-09 14:03:51 · 851 阅读 · 0 评论 -
邻接表
#include using namespace std;const int MaxSize = 10; ///图的最大顶点数struct ArcNode { ///定义边表结点 int adjvex; ///邻接点域,存放该顶点的邻接点在顶点表中的下标 ArcNode* next; ///指针域,指向边表中的下一个结点};templa原创 2013-07-16 20:31:17 · 937 阅读 · 0 评论 -
邻接矩阵
#include using namespace std;const int MaxSize = 10; ///图中的最多顶底个数template class MGraph{private: DataType vertex[MaxSize]; ///存放图中顶点的数组 int arc[MaxSize][MaxSize]; ///存放图原创 2013-07-16 18:24:41 · 876 阅读 · 0 评论 -
队列的链接存储结构---链队列
#include using namespace std;const int QueueSize = 100;template struct Node { DataType data[QueueSize]; Node* next;};template class LinkQueue{private: Node* fr原创 2013-07-14 00:07:29 · 970 阅读 · 0 评论 -
队列的顺序存储结构---循环队列
#include using namespace std;const int QueueSize = 100;template class CirQueue{private: DataType data[QueueSize]; ///存放队列元素的数组 int front, rear; ///队头和队尾指针public:原创 2013-07-13 23:10:28 · 1072 阅读 · 0 评论 -
两栈共享空间
#include using namespace std;const int StackSize=100;template class BothStack{ private: int data[StackSize]; ///存放两个栈的数组 int top1,top2; ///两个栈的栈顶指针,分别为各自栈顶元素在数组中的下标 public: Bot原创 2013-07-13 18:27:27 · 827 阅读 · 0 评论 -
栈的顺序存储结构---顺序栈的实现
#include using namespace std;const int SeqStackSize=100;template class SeqStack{ private: int data[SeqStackSize]; int top; public: SeqStack(){ top=-1; } ///构造函数,初始化一个空栈 ~Seq原创 2013-07-13 17:44:05 · 885 阅读 · 0 评论 -
合并顺序表(顺序表)
1.题目: Problem Description假设有两个由小到大有序的有序顺序表A和B,现要求将表B并入表A中,且A表仍保持由小到大的有序性。若合并后的顺序表表长超过总容量20,则输出“not enough”。 Input第一行为一个数字n,表示下面有n组数据,每组数据包括4行;每组数据中的第一行表示表A的表长,第二行表示表A的数据元素,第三行表示表B的表长,第四行表示表B原创 2013-09-05 21:39:27 · 2346 阅读 · 0 评论