随笔分类 -  数据结构

摘要:二叉树的定义: 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。下面介绍二叉 阅读全文
posted @ 2016-04-24 20:56 菜鸟奋斗史 阅读(358) 评论(0) 推荐(0)
摘要:一、希尔排序 希尔排序(缩小增量法) 属于插入类排序,由Shell提出,希尔排序对直接插入排序进行了简单的改进:它通过加大插入排序中元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项大跨度地移动,当这些数据项排过一趟序之后,希尔排序算法减小数据项的间隔再进行排序,依次进行下去,进行这些 阅读全文
posted @ 2016-04-23 21:57 菜鸟奋斗史 阅读(829) 评论(0) 推荐(0)
摘要:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算 阅读全文
posted @ 2016-04-17 13:06 菜鸟奋斗史 阅读(4940) 评论(0) 推荐(0)
摘要:单链表学习 学习第一步:定义存放链表结点的类Node,类中包含两个字段:data字段和next字段,data字段是结点中的数值域,next是指向链表下一个结点的引用 学习第二步:学习单链表的一些操作,插入、删除、查找结点 双端链表学习 可以看到我们上面的操作,在链表尾插入、删除结点的操作,虽然也可以 阅读全文
posted @ 2016-04-16 19:18 菜鸟奋斗史 阅读(711) 评论(0) 推荐(0)
摘要:中缀表达式转后缀表达式的规则:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后 阅读全文
posted @ 2016-04-10 15:57 菜鸟奋斗史 阅读(1199) 评论(0) 推荐(0)
摘要:如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先 阅读全文
posted @ 2016-04-06 10:05 菜鸟奋斗史 阅读(1293) 评论(0) 推荐(0)
摘要:一、包含队列元素nItem方式: 二、不包含队列元素nItem方式: 三、用链表来实现队列 存放结点: 定义的链表的操作: 链表模拟的队列 测试类 阅读全文
posted @ 2016-04-05 16:40 菜鸟奋斗史 阅读(1846) 评论(0) 推荐(0)
摘要:一、单词逆序 二、括号匹配 阅读全文
posted @ 2016-04-04 11:45 菜鸟奋斗史 阅读(994) 评论(0) 推荐(0)
摘要:一、以数组为内核的栈的实现: 二、用链表来实现栈 阅读全文
posted @ 2016-04-04 10:02 菜鸟奋斗史 阅读(375) 评论(0) 推荐(0)
摘要:将数组封装在类中: 类中的一些方法: 一、冒泡排序 1 public void method_Bubble(){//冒泡排序 2 for(int i=0;i<len-1;i++){ 3 for(int j=i+1;j<len;j++){ 4 if(arr[i]>arr[j]){ 5 swap(arr 阅读全文
posted @ 2016-04-03 11:12 菜鸟奋斗史 阅读(593) 评论(0) 推荐(0)
摘要:数据结构之数组的运用,无非是增删查操作,就有序数组和无序数组进行这三种操作: 一、查找 (1)无序数组查找特定元素,线性查找: (2)有序数组查找特定元素,可以采用线性查找或者是二分查找(BinarySearch),这里我们使用二分查找 数组为升序排列或降序排列,使用二分查找代码代码有些不同,坑爹呀 阅读全文
posted @ 2016-04-03 09:29 菜鸟奋斗史 阅读(290) 评论(0) 推荐(0)