
数据结构和算法
文章平均质量分 70
The_poor_student
任何事物都有抛弃你的可能,唯独学习这件事只能被你抛弃~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
回文数(山东理工OJ)
题目描述与回文串的定义一样,回文数是指一个数从第一位到最后一位读和从最后一位到第一位读是一样的。例如:121、22、2 是回文数而 312 不是。给定一个数,你的任务是找到大于这个数的第一个回文数。输入输入包含多组测试数据,每组数据只有一个数字 N, N 不超过 10000 位且不含前导零。输出对于每组测试数据,输出只有一行,为大于 N 的第一个回文数示例输入2 312原创 2014-04-20 17:05:33 · 2224 阅读 · 0 评论 -
数据结构_队列
#include #include #include #define MAX 100using namespace std;typedef int Elem_Type;typedef struct queue{ Elem_Type *data; int front; int rear;}Queue;enum Status{ OK = 0;原创 2014-03-26 00:03:41 · 690 阅读 · 0 评论 -
已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
题目描述输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。输入第一行输入二叉树的先序遍历序列;第二行输入二叉树的中序遍历序列。输出输出该二叉树的后序遍历序列。示例输入ABDCEFBDAECF示例输出DBEFCA#include #include #define MAX 50+3using namespace std;typede原创 2014-05-16 22:59:29 · 21293 阅读 · 4 评论 -
大数加法
以前写过大数加法的程序,今天做一个总结,就先说大数加法吧。int、float、double等基本数据类型的数据容量有限,不深究它们的具体范围是多大,但粗略估算,大概也不超过25位吧。如果有一个是50位的数字,基本数据类型根本无法存储这么大的数字,那我们应该怎么办?这时候,我们应该采用大数的思想:用数组来分别保存这50位数字中各个位的数字。大数加法的步骤:首先我们输入要相加的2个数字原创 2014-04-28 08:43:26 · 8053 阅读 · 0 评论 -
二叉树的建立与遍历(山东理工OJ)
题目描述已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。输入输入一个长度小于50个字符的字符串。输出输出共有4行:第1行输出中序遍历序列;第2行输出后序遍历序列;第3行输出叶子节点个数;第4行输出二叉树深度。示例输入abc,,de,g,,原创 2014-05-05 23:26:54 · 1865 阅读 · 0 评论 -
已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历
题目描述已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历输入输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。输出输出二叉树的先序遍历序列示例输入2dbgeafcdgebfcalnixulinux示例输出原创 2014-05-20 23:32:53 · 9058 阅读 · 1 评论 -
层次遍历二叉树
按先序序列输入字符序列(其中逗号表示空节点),输出该二叉树的层次遍历序列。#include #define END ','//表示空节点using namespace std;typedef char Elem_Type;typedef struct BiTree{ Elem_Type data; struct BiTree *Lchild; stru原创 2014-05-22 23:07:53 · 1177 阅读 · 0 评论 -
逆序建立链表
题目描述输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据。输入第一行输入整数N;;第二行依次输入N个整数,逆序建立单链表。输出依次输出单链表所存放的数据。示例输入1011 3 5 27 9 12 43 16 84 22 示例输出22 84 16 43 12 9 27 5 3 11#include #inc原创 2014-05-25 18:25:26 · 1100 阅读 · 0 评论 -
二叉树为什么用二级指针来构造的原因
我觉得二叉树的构造是最难理解的,其他的还好说。先说说我对构造二叉树的理解吧。从某种角度来说,二叉树也是一种单链表,上一个结点记录下一个结点的地址。他们的区别就在于二叉树的上一个结点可能记录多个下一结点的地址(最多2个),而单链表是只记录一个。单链表是这样定义的: 二叉树是这样定义的:struct Node struct Node{原创 2014-04-19 21:03:35 · 8601 阅读 · 4 评论 -
二叉树
感觉二叉树这个章节是比较有难度的,打算看完树的这一章后,就开始对之前学习的数据结构做一些总结,巩固一下基础。关于二叉树目前就只看了一点点,觉得递归的知识在这一章中用的特别多,至于递归是怎么实现的,脑子里也是一片朦胧,就只知道是调自己那么一回事,要说出个所以然来,还是不知道怎么去描述这一过程。感觉还是要慢慢来,看一点写一点。#include using namespace std;typed原创 2014-04-17 22:59:08 · 911 阅读 · 0 评论 -
快速排序(源代码篇)
/**************************************************************************************** 算法: 1、先以数组的第一个数据作为参考,然后从右边开始--逐个比较。 2、如果比较之后不符合排序,那么交换它们2个的数据,然后此时右边的数据成为参考。 3、从原创 2014-04-15 00:58:30 · 1479 阅读 · 0 评论 -
插入排序(源代码篇)
/**************************************************************************************** 算法: 1、将要排序的数组看成一个无序和有序数组。 2、有序数组中腾出一个适当的位置。 3、将无序的数组元素逐渐插入到有序数组中。**************原创 2014-04-13 13:20:04 · 1247 阅读 · 0 评论 -
选择排序(源代码篇)
/***************************************************************************************** 算法: 1、第一轮比较:假设第一个元素是最小的;第二轮比较:假设第二个元素是最小的,依此类推。 1、用假设的元素对数组进行遍历比较,不符合要求的记录其下标。原创 2014-04-08 22:51:32 · 1942 阅读 · 0 评论 -
冒泡排序(源代码篇)
/***************************************************************************************** 算法: 1、相邻两个元素进行比较,即0号元素和1号元素、1号元素和2号元素、2号元素和3号元素,依此类推。 2、每轮比较之后,就会产生一个最值,并且这个最值总是在最后面才出现,原创 2014-04-08 20:50:44 · 2018 阅读 · 0 评论 -
数据结构_顺序栈
/* 数据结构-栈 *//* 异常的细节处理还没弄好*/#include #include #include #define len_chu_shi 50 //初始空间大小#define len_zeng_jia 10 //额外增加空间大小#define OK 0 //正确#define OVER -2 //#define ERROR -1原创 2014-03-20 15:51:01 · 556 阅读 · 0 评论 -
数据结构_链栈
#include #include #include #define OK 0#define OVER -1#define ERROR -2using namespace std;typedef int elem_type;typedef int function_type;typedef struct stack{ elem_type data; struct原创 2014-03-20 15:46:29 · 686 阅读 · 0 评论 -
数据结构_顺序表
运行时效果/************************************************************ 说明: 1、主函数内的代码是为了测试方便,可以自行修改。 2、宏定义NEWS是人机交互信息提示,若不需要,可修改为0。 3、若是windows系统,请将258行中的 clear 修改为 cls。原创 2014-04-01 23:57:04 · 886 阅读 · 0 评论 -
大数减法
大数减法的步骤(先戳我看看大数加法的思想):首先是输入2个数据,并且逆序,还要去掉前导0。比较大小:相等的话,结果为0。前者大于后者,则直接进行减法运算。前者小于后者,则用后者减去前者,最后在结果前面添上负号。从最高位开始输出结果。#include #include #define MAX 1000using namespace std;void InputNu原创 2014-04-30 02:54:26 · 1365 阅读 · 0 评论 -
数据结构无向图的深度优先遍历
以下面的图片为例题,仅给出源代码,不谈算法思想。#include #include #include #define MAX_VERTEX_NUM 20+3 //最大顶点数量//#define true 1//#define false 0using namespace std;typedef char VERTEX_TYPE; //顶点的类型typedef struc原创 2014-10-05 11:33:57 · 6652 阅读 · 0 评论