本节课主要讲了如何构造自己想要的数据结构,或者扩充已有数据结构的功能,以实现想要的特定功能
比如设计一个动态结构,满足功能寻找第k大的数
其做法是维护每个结点的子结点个数来推导其秩,而不维护其秩,因为动态操作会使得其难以维护
红黑树的插入操作 1.树插入 2.rebalance
构造自己需要的扩充数据结构的基本流程
1.选择一个基本的数据结构 例如红黑树
2.决定要...
分类:
编程语言 时间:
2015-04-27 09:50:44
阅读次数:
182
上一节结束后,我们已经可以判断链表是否有环了,如果无环,那么按照前两节所讲的方法去判断链表是否相交以及获取相交结点,如果有环呢?怎么判断是否相交?...
分类:
编程语言 时间:
2015-04-27 09:47:19
阅读次数:
160
有环链表是否相交我们也可以判断了,剩下的就是获得有环链表相交结点...
分类:
编程语言 时间:
2015-04-27 09:46:43
阅读次数:
210
前两篇讨论的前提都是链表是无环的,但是如果链表有环呢?...
分类:
编程语言 时间:
2015-04-27 09:46:18
阅读次数:
132
堆和栈的区别一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方...
分类:
编程语言 时间:
2015-04-27 00:26:33
阅读次数:
142
基本思想:
直接插入排序的思想非常简单,将序列中第一个元素作为一个有序序列,然后将剩下n-1个元素按关键字大小依次插入该有序序列,每插入一个元素后依然保持该序列有序,经过n-1趟排序后即成为有序序列。
直接插入排序示例:
由图可以看到,括号里面的都是有续表,而货号后面的灰色关键字是下一个将要插入的元素。
代码:
void InsertSort(int A[],in...
分类:
编程语言 时间:
2015-04-26 22:51:28
阅读次数:
148
result的数据结构为List> //将List转换为二维数组String[][] String[][] z = new String[result.size()][]; for(int...
分类:
编程语言 时间:
2015-04-26 22:38:10
阅读次数:
165
开学一个月,已经多次梦见笔试出现数据结构算法题,我对数据结构的恐惧已经多于任何“妖魔鬼怪”了。呵呵,看来真的很有必要复习一下常用的数据结构,免得“噩梦”成真。数据机构等编程基础的重要性不用多说,直接进入正题。排序算法,分为内部排序和外部排序。内部排序要使用内存,这里只探讨内部排序。1,插入排序:直接...
分类:
编程语言 时间:
2015-04-26 21:12:07
阅读次数:
138
数据结构一、数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 length:求长度 subset:求子集 s...
分类:
其他好文 时间:
2015-04-26 21:05:45
阅读次数:
162
传送门:http://oj.cnuschool.org.cn/oj/home/problem.htm?problemID=983WZJ的数据结构(七)难度级别:C; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B试题描述给你一棵N个节点的无根树,每个点有...
分类:
其他好文 时间:
2015-04-26 18:01:41
阅读次数:
139