
数据结构DataStructures
文章平均质量分 61
小萝莉_Lolita
做自己的superman
展开
-
C语言栈实现逆波兰计算器
逆波兰计算器:输入所要计算的表达式的逆波兰式,并进行计算。如 (1-2)*(4+5)其逆波兰式:1 2 - 4 5 + *基础的东西,还是要多敲如下代码中,输入的格式如:1 2 - 4 5 + * ##include #include #include #define Stack_Init_Size 20#define Sta原创 2015-09-07 16:28:08 · 1932 阅读 · 0 评论 -
排序算法Java实现
不稳定排序 选择排序: 经过第一轮比较得到的最小的记录,与第一个记录的位置交换, 然后对不包括第一个记录以外的记录进行第二轮比较,得到的最小记录与第二个记录交换 时间复杂度:O(n^2) 空间复杂度:O(1) public static void selectSort(int[] arr){ if (arr == null || arr....原创 2018-07-18 21:55:24 · 267 阅读 · 0 评论 -
二叉排序树的实现
题目描述输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。 输入描述:输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。 输出描述:可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个空格。输入中可...原创 2018-04-12 16:30:20 · 386 阅读 · 0 评论 -
二叉排序树的操作
删除结点是比较麻烦的,这里简要介绍一下如何删除结点 1.待删除的结点是叶子结点,这种很简单,直接令指向该结点的指针指向null即可 2.待删除的结点只有左子树,这种也比较好操作,令指向该结点的指针指向该结点的左子树即可 3.待删除的结点只有右子树,这种同上操作,令指向该结点的指针指向该结点的右子树即可 4.待删除的结点的左子树和右子树均不为空,这种情况下,我们可以将删除操作进行转换,转换为...原创 2018-03-13 15:21:48 · 409 阅读 · 0 评论 -
多项式的加法运算实现(利用链表结构)
链表结构实现多项式的相加主要思路:相同指数的项相加,其余的拷贝。多项式每个节点的结构如下: 其中,4为指数,6为系数,箭头表示指向下一个节点的引用package dream.linearlist.example;/** *多项式的加法运算实现 * Polynomial是存放多项式的每项的节点:指数和系数及指向下一项的节点 */class Polynomial{ i...原创 2018-03-01 21:32:22 · 1489 阅读 · 0 评论 -
队列Queue的实现
队列:先进先出 两种实现方式: 1.利用数组 2.链式存储需要两个变量指向队头front和队尾rear,当入队时,队尾后移;出队时,队头后移 使用数组实现,当我们入队至数组满,然后出队至数组空,此时虽然数组为空,但是却不能再入队了,因为队尾rear已经指向了数组的最后一个索引位置。那么如何充分利用数组呢? 通过一定的计算操作使得数组虚拟为环形的数组pack...原创 2018-03-01 21:15:24 · 537 阅读 · 0 评论 -
栈Stack的实现及其应用
栈:先进后出实现方式有两种,一种使用数组,一种是链式结构 使用数组的缺点就是在定义栈的时候就需要以某值初始化数组,确定数组的大小,也就是确定了栈的深度/** * 栈:底层用数组实现 */public class ArrStack { //top记录栈顶的位置 private int top; private Object[] elem; ...原创 2018-03-01 17:20:30 · 437 阅读 · 0 评论 -
树结构
关于树的一些特性:每个树都是由根节点及一些“子树”构成。非空树至少有一个节点,根节点。否则,没有任何节点,为空树。子树之间是互不相交的除了根节点外,每个节点有且仅有一个父节点一颗N个节点的树有N-1条边关于树的一些概念:节点的度:节点的子树个数树的度:树中所有节点的度的最大值叶子节点的度为0节点的层次:规定根节点所在的层次为1,其他任意节点是其父节点的层次加1树的深度:树...原创 2018-03-08 22:44:52 · 420 阅读 · 0 评论 -
数据结构之线性表
线性结构包括:数组、链表、队列、栈等。 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。两种实现方式: 顺序存储:底层利用数组实现 链式存储package dream.linearlist;/** * 线性表的抽象数据类型描述 */public in...原创 2018-02-28 19:07:38 · 242 阅读 · 0 评论 -
C语言实现Huffman树并计算带权路径长度
More Code,More progress#include#includetypedef int ElemType;typedef struct _BTreeNode { ElemType data; struct _BTreeNode* left; struct _BTreeNode* right;}BTreeNode;//根据数组 a原创 2015-09-16 20:32:00 · 5210 阅读 · 0 评论 -
C语言利用栈实现将中缀表达式转换为后缀表达式(即逆波兰式)
输入计算表达式如:(1-3)*4+10/5输出的逆波兰式:1 3 - 4 * 10 5 / +码代码时脸上洋溢着的神秘的微笑#include #include #include #define Stack_Init_Size 20#define Stack_Increasement 10typedef char Elemtype;type原创 2015-09-07 21:17:05 · 6864 阅读 · 5 评论 -
数据结构中的二叉树
二叉树:使用范围最广,且最有规律可循,容易维护处理使用二叉链表来表示二叉树的存储结构typedef struct BiTNode{ ElemType data; //存放节点数据 struct BiTNode *lchild,*rchild; //指向左孩子和右孩子节点的指针}BiTNode,*BiTree;原创 2015-09-10 16:43:39 · 997 阅读 · 0 评论 -
数据结构中树的表示方法
树:非线性结构 在计算机中,就只有顺序存储和链式存储,但是对于树结构在计算机中的存储,当然可以天马行空能想到的方法很多,但是考虑到充分利用存储空间,这里说三种主要的表示方法a)双亲表示法:以双亲作为索引关键词的一种表示方法定义一个结构,对于每个节点,除了存储自身的信息,还存储着其双亲节点的位置假设一组连续空间存储树的节点,同时在每个节点中,附设一个指示其双亲节点在数组中原创 2015-09-10 00:33:25 · 8914 阅读 · 0 评论 -
C语言栈的实现及利用栈实现二进制到八进制的转换
小菜最近复习数据结构~~~很简单的东西还是要敲阿 就这样 po代码#include #include #include #define Stack_Init_Size 20#define Stack_Increasement 10typedef char Elemtype;typedef struct{ Elemtype *base;原创 2015-09-04 11:37:03 · 1781 阅读 · 0 评论 -
八皇后问题的两种解决方法
最近看到递归,原本利用回溯思想解决的经典八皇后问题,其实也是可以用递归解决的~八皇后的递归解决思路:从第一行开始,依次判断0~8列的哪一列可以放置Queen,这样就确定了该行的Queen的位置,然后行数递增,继而递归实现下一行的判断,依次类推直到行数增加到8(行数从0开始的),此时为递归-----归的条件,即表示一种八皇后的解决方法完成,打印结果;之后进行下一种解决方法的寻找,大致思路个人原创 2015-09-09 21:27:30 · 2259 阅读 · 0 评论 -
递归实现拆半查找
二分法查找:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一原创 2015-09-09 17:47:12 · 1192 阅读 · 0 评论 -
简析递归思想及其典型算法
递归:也就是在运行过程中自己调用自己一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算。它可以用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进-----递;当边界条件满足时,递原创 2015-09-09 17:13:36 · 1000 阅读 · 0 评论 -
Java实现关于数组的一些骚操作
如何找出数组中唯一的重复元素? 问题描述:数组a[N],1-N-1这N-1个数存放在a[N]中,其中某个数字重复1次。写一个函数,找出重复的数字。要求每个数组元素只能访问一次,并且不用辅助空间。分析:由于不能使用辅助物理空间且每个元素只能访问一次,所以可以从原理入手,采用数学求和法。 设重复的数字为A,那么数组的和为1-N-1,A的累加,减去1-N-1的累加即可得到重复的数字A...原创 2018-07-26 16:46:46 · 1400 阅读 · 0 评论