/*有序数组:主要是为了提高查找的效率 *查找:无序数组--顺序查找,有序数组--折半查找 *其中插入比无序数组慢 * */ public class MyOrderedArray { private long[] arr; private int items; public MyOrderedArray(int max) { arr = new long[max]; items = 0; } //数组中元素的个数 public int size(){ return items; } //折半查…
/*线性表的数组实现 *特点:插入删除慢需要平均移动一半的数据,查找较快 *注意:有重复和无重复的数据对应的操作会有些不同 *注意数组一旦创建其大小就固定了 *Java集合长度可变是由于创建新的数组将原来旧的数据复制过去--这些附加功能牺牲了效率 *主要实现以下几个功能 *1.线性表查找 *2.线性表删除 *3.线性表的插入存储一个元素(无序数组插入) * */ public class MyArray { private long[] arr; private int items;//记录数组…
/*队列:其实也是一种操作受限的线性表 *特点:先进先出 *队尾指针:负责元素的进队 *队头指针:负责元素的出队 *注意:普通队--容易浪费空间,一般队列使用最多的就是循环队列--指针环绕 *队列的实现方式:数组/链表 *队列判空判满: *1.按照队列中元素的个数 *2.按照队头和队尾指针的关系 *存在双端队列:每端都可以插入和删除,其变形可以是操作受限的双端队列 *队列的应用:其实很多现实世界的规则都是按照排队这种思想 * */ public class MyQueue { private i…
/*优先队列--是对队列的一种改进 *要存储的数据存在优先级--数值小的优先级高--在队头 *优先队列的实现 *1.数组:适合数据量小的情况(没有用rear+front实现) *优先队列头在items-1,队列尾在0是固定的 *2.堆:适合数据量大的情况 *优先队列的效率:插入O(N)移除O(1) *优先队列的应用:操作系统线程调度算法 * */ public class MyPriorityQueue { private int maxSize; private long[] arr;//插入…
#include <stdio.h> #include <malloc.h> int main(void) { int i, n; double s = 1.3; double x; double *p; p = (double *)malloc(sizeof(double) * 100); for (n = 0; n < 50; n++) { *(p + n) = s; s += 2.9; } scanf("%lf", &x); //第18行代码…
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/details/37878701?utm_source=tuicool&utm_medium=referral hbase操做 hbase web操作 hbase shell 基本操作 1建表 具体命令 2建表后查看表describe 3清空表truncate lmj_test 4删除表 5修改表结构先…
http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1324 题目描述 已知线性表 LA 和 LB 中的数据元素按值非递减有序排列,现要求将 LA 和 LB 归并为一个新的线性表 LC, 且 LC 中的数据元素仍然按值非递减有序排列.例如,设LA=(3,5,8,11) ,LB=(2,6,8,9,11,15,20) 则 LC=(2,3,6,6,8,8,9,11,11,15,20) 算法描述如下: 从上述问…
对于单链表,我们大多时候会用指针来实现(可参考基于指针实现的单链表).现在我们就来看看怎么用数组来实现单链表. 1. 定义单链表中结点的数据结构 typedef int ElementType; class NodeType { public: ElementType data; int next; }; 该结点包括了两个元素,其一是数据,另一个是指向下一个结点的“指针”(在这篇文章中实际上是指用于实现单链表的数组的下标.)  2. 定义一个的数组 ; NodeType node[CAPACIT…
文字描述 用两个数组分别存储顶点信息和边/弧信息. 示意图 算法分析 构造一个采用邻接矩阵作存储结构.具有n个顶点和e条边的无向网(图)G的时间复杂度是(n*n + e*n), 其中对邻接矩阵G.arcs的初始化耗费了n*n的时间. 借助于邻接矩阵容易判定两个顶点之间是否有边/弧相连,并容易求得各个顶点的度.对于无向图,顶点vi的度是邻接矩阵地i行(或第i列)的元素之和:对于有向图,第i行的元素之和为顶点vi的出度:第j列的元素之和为顶点vj的入度: 代码实现 /* 以数组表示法(邻接矩阵)作为…
#include<iostream> #include<string> #define ml 10 using namespace std; typedef struct{//定义Data数据项 std::string name; long num; }Data; struct Link{//定义结构体 Data data[ml+]; int length; }L; void initLink(Link *p){//初始化,即便有数据可以覆盖写入增加效率 p->length=…
ibdata是InnoDB最重要的系统表空间文件,它记录了InnoDB的核心信息,包括事务系统信息.元数据信息,记录InnoDB change buffer的btree,防止数据损坏的double write buffer等等关键信息. InnoDB逻辑存储空间称为表空间,表是由段(segment).区(extent).页(page)组成. 表空间:所有数据都被逻辑地存放在一个空间中,被称为表空间.默认情况下InnoDB存储空间有一个共享表空间ibdata1,所有数据都存放在这个表空间内.如果想…
转载 http://www.jb51.net/article/5620.htm MySQL支持的两种主要表存储格式MyISAM,InnoDB,上个月做个项目时,先使用了InnoDB,结果速度特别慢,1秒钟只能插入10几条.后来换成MyISAM格式,一秒钟插入上万条.当时决定这两个表的性能也差别太大了吧.后来自己推测,不应该差别这么慢,估计是写的插入语句有问题,决定做个测试:测试环境:Redhat Linux9,4CPU,内存2G,MySQL版本为4.1.6-gamma-standard测试程序:…
/*用链表实现栈--链栈 * */ public class MyLinkedStack { public MyLinkedList linklist; int items; public MyLinkedStack() { items = 0; linklist = new MyLinkedList(); } public boolean isEmpty(){ return linklist.isEmpty(); } public void push(int key){ linklist.in…
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链式存储结构:是用一段一段连续的内存空间存储表中每一行的数据,段与段之间通过一个引用(指针)相互连接来,形成一个链式的存储结构 看到顺序存储结构的图示,我们可能会马上联想到C语言的数组.是的,数组就是一种典型的顺序存储数据结构.下面我通过一个实例,来实现对顺序存储结构中的数据增.删.改.查的操作. 首…
白天没屌事,那我们就来玩玩线性表的实现吧,快要失业了,没饭吃了咋整哦 题目描述假设利用两个线性表LA和LB分别表示两个集合A和B(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合A=A∪B.这就要求对线性表做如下操作:扩大线性表LA,将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中去.只要从线性表LB中依次取得每个元素,并依值在线性表LA中进行查访,若不存在,则插入之. #ifndef FUNC_H_INCLUDED #define FUNC_H_INCLUDE…
上一节中, 线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,它的存储位置可用一个简单,直观的公式来表示.然后,另一方面来看,这个特点也造成这种存储结构的弱点,在做插入或删除操作时,需移动大量元素. 而链式存储结构,由于它不需要逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构所具有的弱点,但同时也失去了顺序表可随机存取的优点. 线性链表 wiki中的定义: 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不…
一.线性表的抽象数据类型表述 线性表的结构简单,长度允许动态增长或搜索:可以对线性表中的任何数据元素进行访问和查找:允许进行数据的插入和删除操作:求线性表中的指定数据的前驱和后继:合并线性表以及拆分线性表中. Java JDK中有ArrayList和LinkedList两个类很好的实现了顺序存储和链式存储.因此学习数据结构的最好方式是去研究JDK源码. 这里的代码个人作为练习,为了便于理解,很多地方处理的并非十分严谨,仅供参考.转载注明出处,技术讨论 email: <yaoyao0777@Gma…
[线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typedef int ElemType; /*ElemType类型依实际情况而定*/ typedef struct { Element data[MAXSIZE]; /*数组存储数据元素,最大值为MAXSIZE*/ int length; /*线性表当前长度为length*/ }SqlList; [线性表的…
1.线性表链式存储结构及基本操作算法实现 (1)单链表存储结构类的定义: #include <iostream> using namespace std; template <class T> class LinList { private: ListNode <T> *head; //头指针 int size; //当前的数据元素个数 ListNode <T> *Index(int i); //定位 public: LinList(void); //构造函…
前言 其实在学习数据结构之前,我也是从来都没了解过这门课,但是随着工作的慢慢深入,之前学习的东西实在是不够用,并且太皮毛了.太浅,只是懂得一些浅层的,我知道这个东西怎么用,但是要优化.或者是解析,就不知道该咋弄了.比如JAVA 最有名的几个容器: List Set MAP Queue 这些都是涉及到有关数据结构的,以及一些简单的算法.排序.冒泡排序.二分法这些,都要涉及到时间复杂度.以及数据结构的知识,这门课,还是很重要的. 为了啥 其实数据结构,结构这个词,就是将我们原本的一些数据,按照某种结…
数据结构与算法系列2.2 线性表 什么是链表? 链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表的链接次序实现的一系列节点组成,节点可以在运行时动态生成,每个节点包括两个部分,一个是村粗数据元素的数据域,一个是存储指针的指针域,相比于线性表顺序结构,操作复杂.由于不必须按照顺序存储,链表在插入的时候可以达到o(1)的复杂读,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O…
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include<iostream> #define MAXSIZE 20 #define OK 1 #define ERROR 0 #define TURE 1 #define FALSE 0 typedef int Status; typedef int ElemType; class SqList{ public…
如果看完本篇博客任有不明白的地方,可以去看一下<大话数据结构>的7.4以及7.5,讲得比较易懂,不过是用C实现 下面内容来自segmentfault 存储结构 要存储一个图,我们知道图既有结点,又有边,对于有权图来说,每条边上还带有权值.常用的图的存储结构主要有以下二种: 邻接矩阵 邻接表 邻接矩阵 我们知道,要表示结点,我们可以用一个一维数组来表示,然而对于结点和结点之间的关系,则无法简单地用一维数组来表示了,我们可以用二维数组来表示,也就是一个矩阵形式的表示方法. 我们假设A是这个二维数组…
前言 为什么要学习数据结构与算法,如果你学会了做安卓,javaweb,前端等,都是你的武功秘籍,但是如果你的内功不够好,再厉害的功夫也是白费. 数据结构和算法:什么是数据结构,什么是数据,在计算机内部数据为01010101...,数据是我们生活中一切的事务都可以表示为数据,如你和你朋友聊天的话都是数据,朋友圈的发表内容也是内容. 数据结构是数据之间相互存在的一种或多种特定的关系,数据之间的关系.数据结构的关系,要么一对一,或者一对多. er图,实体关联图.数据与数据之间的关系,分: 图形结构 树…
一.图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合. 注: 在线性表中,元素个数可以为零,称为空表: 在树中,结点个数可以为零,称为空树: 在图中,顶点个数不能为零,但可以没有边. 二.图的基本术语 略. 三.图的遍历 图的遍历是在从图中某一顶点出发,对图中所有顶点访问一次且仅访问一次. 图的遍历操作要解决的关键问题: ① 在图中,如何选取遍历的起始顶点? 解决方案:从编号小的顶点开始…
线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不都是整形,要么全部都是字符串.一半是整形,另一半是字符串的一组数据无法使用线性表存储. 线性表存储数据可以分为: 顺序存储结构和链式存储结构 数据结构中,一组数据中的某一元素的左侧相邻元素称为“直接前驱”,位于此元素左侧的所有元素都统称为“前驱元素”:某一元素的右侧相邻元素称为“直接后继”,位于此元…
将线性表的抽象数据类型定义在顺序表存储结构下用C++的类实现,由于线性表的数据元素类型不确定,所以采用模板机制. 头文件seqlist.h #pragma once #include <iostream> ; template<class T>// 定义模板类 class SeqList { public: SeqList() { Length = ; }; // 无参构造函数,建立一个空的顺序表 SeqList(T a[], int n); // 有参构造函数,建立一个长度为n的…
一个双向链式结构实现的线性表 duList (GCC编译). /** * @brief 线性表双向链表结构 * @author wid * @date 2013-10-28 * * @note 若代码存在 bug 或程序缺陷, 请留言反馈, 谢谢! */ #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 typedef struct Point2D { int x; int y; }ElemT…
一个单链式实现的线性表 mList (GCC编译). /** * @brief 线性表的链式实现 (单链表) * @author wid * @date 2013-10-21 * * @note 若代码存在 bug 或程序缺陷, 请留言反馈, 谢谢! */ #include <stdio.h> #include <stdlib.h> #define TRUE 1 #define FALSE 0 typedef struct { int x; int y; }Point2D; //P…
文字描述 邻接多重表是无向图的另一种链式存储结构. 虽然邻接表是无向图的一种很有效的存储结构,在邻接表中容易求得顶点和边的各种信息. 但是,在邻接表中每一条边(vi,vj)有两个结点,分别在第i个和第j个链表中,这给某些图的操作带来不便.如对已被搜索过的边作记号或删除一条边等,此时需要找到表示同一条边的两个结点.因此,在进行这类操作的无向图的问题中采用邻接多重表更合适. 邻接多重表的结构和十字链表类型.边结点和顶点结点如下示: 边结点由6个域组成:mark为标志域,可标记这条边是否被搜索过: i…