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

Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出键值对. for key in dict: #迭代键 for val in dict.value(): #迭代值 for k,v in dict.items(): #迭代键值对 当迭代列表时,通过内置函数enumerate()可以迭代出索引加值. for i in list #迭代列表 for i…
一. 递归 本质上,将原来的问题,转化为更小的同样的问题 举例:数组求和 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…
一.链表基础 动态数组.栈.队列底层都是依托静态数组实现的,靠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…
一.单向n-1 单向n-1关联只需从n的一端可以访问1的一端. 域模型: 从Order到Customer的多对一单向关联.Order类中定义一个Customer属性,而在Customer类不用存放Order对象的引用.      Order.java public class Order{ private Integer uid; private String name; private Customer cus; //省略get.set方法 } Customer.java public cla…
树是一种一对多的逻辑结构,树的子树之间没有关系. 度:结点拥有的子树数量. 树的度:树中所有结点的度的最大值. 结点的深度:从根开始,自顶向下计数. 结点的高度:从叶结点开始,自底向上计数. 树的性质:①树的结点数等于所有结点的度数加1:②度为m的树中第i层上至多有mi-1个结点(i>=1):③度为h的m叉数至多有(mh-1)/(m-1)个结点:④具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]. 树的表示方法: ①双亲表示法(顺序表示法):根节点parent=-1 typede…
一.数组基础 1.数组,即把数据码成一排存放. 数组优点:快速查询. 数组最好应用于“索引有语意”的情况,但并非所有有语意的索引都适用于数组,数组也可以处理“索引没有语意”的情况. 2.增.删.改.查,是研究数据结构的基本脉络. 设二次封装的数组的类Array<E>(类型为E,泛型),E[ ] data 基本参数有capacity和size. capacity为数组空间最多装的元素个数,即data.length. size为数组实际装的元素个数. 有些方法需要对size进行维护. 二. 动态数…
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1:当栈为满栈时,top=MaxSize-1.顺序栈的定义为: #define MaxSize 50 //定义栈中元素的最大个数 typedef struct{ Elemtype data[MaxSize]; //存放栈中元素 int top; //栈顶指针 }SqStack; //顺序栈的简写 顺序栈…
抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,由逻辑结构.存储结构.数据的运算组成. 数据结构的逻辑结构有线性结构(一对一).树(一对多)以及图(多对多). 数据结构的存储结构有顺序结构.链式结构.索引结构和散列结构. 数据的运算由运算的定义以及运算的实现构成. 算法有以下五个特性:①有穷性:②确定性:③可行性:④输入:⑤输出. 时间复杂度T(…
1.列表(list) 列表是Python的一种内置数据类型,list是一种有序的集合,可以随时添加和删除其中的元素,就像动态数组一样.获取list中的元素用角标获取,角标可以使用正角标,也可以使用负角标,list中的元素的数据类型也可以不一样,也可以在list内放另外一个list,这样也就形成了一个多维集合.用方括号[]扩起来. list常见的方法: len(list) #获取lest长度 list.append() #末尾追加元素 list.pop() #弹出末尾元素 del list[x]…