<数据结构基础学习>(一)数组】的更多相关文章

数组对于每一门编程语言都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同.Java语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 int[100] 来代替直接声明 100 个独立变量 int0,int1,....,int99.数组的元素是通过索引访问的.数组索引从 0 开始,所以索引值从 0 到 array.length-1. 声明数组变量 数组作为对象允许使用new关键字进行内存分配.在使用数组之前,必须首先定义数组变量所属的类型,即声明数组.声明数组…
一.数组基础 1.数组,即把数据码成一排存放. 数组优点:快速查询. 数组最好应用于“索引有语意”的情况,但并非所有有语意的索引都适用于数组,数组也可以处理“索引没有语意”的情况. 2.增.删.改.查,是研究数据结构的基本脉络. 设二次封装的数组的类Array<E>(类型为E,泛型),E[ ] data 基本参数有capacity和size. capacity为数组空间最多装的元素个数,即data.length. size为数组实际装的元素个数. 有些方法需要对size进行维护. 二. 动态数…
一.链表基础 动态数组.栈.队列底层都是依托静态数组实现的,靠resize来解决固定容量问题. 链表是真正的动态数据结构,是一种最简单的一种动态数据结构. 更深入的理解引用(或者指针). 更深入的理解递归. 辅助成其他数据结构. 二.链表 LinkedList 数据存储在“节点”(Node)中 class Node{ E e; Node next; } 最后一个节点nxet = null 优点:真正的动态,不需要处理固定容量的问题. 缺点:丧失了随机访问的能力(即给出索引直接得到索引位置的元素)…
一.栈 Stack 栈也是一种线性的数据结构 相比数组,栈相对应的操作是数组的子集. 只能从一端添加元素,也只能从一端取出元素.这一端成为栈顶. 1,2,3依次入栈得到的顺序为 3,2,1,栈顶为3,只能取出栈顶的元素3(出栈). 栈是一种后进先出的数据结构 LIFO(Last In First Out) 栈的应用 1.无处不在的Undo操作(撤销) 2.程序调用的系统栈 编程时,用到子过程调用时,当一个子过程执行完成之后自动回到上层中断的位置: 系统栈记录每次调用过程中中断的那个点 funct…
一.队列 Queue 队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素. (排队) 队列是一种先进先出的数据结构(先到先得)FIFO(First In First Out) 二.数组队列的实现(基于动态数组) Interface Queue<E> 接口设置5个方法 void enqueue(E e)   入队  O(1) 均摊 E dequeue() 出队  O(n) (出队后会将后续的元素向前挪一个单位,所以在出队操作上性能…
树是一种一对多的逻辑结构,树的子树之间没有关系. 度:结点拥有的子树数量. 树的度:树中所有结点的度的最大值. 结点的深度:从根开始,自顶向下计数. 结点的高度:从叶结点开始,自底向上计数. 树的性质:①树的结点数等于所有结点的度数加1:②度为m的树中第i层上至多有mi-1个结点(i>=1):③度为h的m叉数至多有(mh-1)/(m-1)个结点:④具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]. 树的表示方法: ①双亲表示法(顺序表示法):根节点parent=-1 typede…
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1:当栈为满栈时,top=MaxSize-1.顺序栈的定义为: #define MaxSize 50 //定义栈中元素的最大个数 typedef struct{ Elemtype data[MaxSize]; //存放栈中元素 int top; //栈顶指针 }SqStack; //顺序栈的简写 顺序栈…
一.数组简介     JavaScript数组的每一项都可以保存任何类型的数据,也就是说数组的第一个位置保存字符串,第二个位置可以保存数值,第三个位置可以保存对象,而且数组的大小是可以动态调整的,即可以随着数据的添加而自动增长以扩容纳新增数据.   二.数组的操作 1.创建 //创建一个空数组 var arr = []; var arr2 = [1,true,new Date()]; arr2.length = 2; alert(arr2); //true   2.pop和push方法     …
一.数组的概念 定义: 数组是存储同一种数据类型的多个元素的集合. 数组既可以存储基本数据类型,也可以存储引用数据类型. 格式: 格式1: 数据类型[] 数组名; 格式2: 数据类型 数组名[]; 这样定义完了,但是数组中是没有元素的,我们必须对数组进行初始化. 二.数组的初始化 Java数组必须先初始化,然后才能使用.所谓的初始化就是为数组的元素分配内存空间,并为每个数组元素赋值. 动态初始化: 初始化时只指定数组的长度,由系统为数组分配初始值. 静态初始化: 初始化时指定每个数组元素的初始值…
一. 递归 本质上,将原来的问题,转化为更小的同样的问题 举例:数组求和 Sum(arr[0... n-1]) = arr[0] + Sum(arr[1...n-1])  第二部分为更小的同一个问题 Sum(arr[1...n-1]) = arr[1] + Sum(arr[2...n-1]) 第二部分为更小的同一个问题 ...... Sum(arr[n-1 ... n-1]) = arr[n-1] + Sum([ ]) 第二部分为最基本的问题 //计算arr[l...n)范围里的数字和priva…