zoukankan      html  css  js  c++  java
  • 数据结构与算法复习

    数据结构回顾与整理

    复习资料《数据结构与算法 Javascript描述》 人民邮电出版社

    数据结构与算法学的次数再多也不为过。

    1,数组array:一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,来计算元素之间存储位置的偏移量。 除了常用的方法,ES5中新增加了几个迭代方法,forEach(),every()some(),reduce(),map(),filter().

    2.列表list:是一组有序数据。其中的数据项被称为 元素。包含属性/方法有listsize,pos(当前位置),length,clear(),toString(),getElement()获取当前位置的元素,insert(),append(),remove(),front(),end(),prev()前移一位,next(),cuurPos()返回列表当前位置,moveTo()移动到当前位置。 特点:其中数据存储的顺序不重要,且不能对数据进行查找。这些栈可以实现。

    3.栈stack:是一种特殊的列表,只能通过栈顶添加或删除元素,属于后入先出(LIFO last in first out)的数据结构,类似于饭店里的一摞盘子,栈通常使用的两种方法push()入栈,pop()出栈,还有peek()用于返回栈顶元素,同时还应有一个top属性用来表示要插入的元素的存储位置。 应用:数制间的相互转换(把余数存入栈中,存储完毕后,通过pop()返回栈顶元素并删除,直至取完所有元素),判断字符串是否是回文(把字符串推入栈,然后pop(),再判断是否相同),模拟递归(比如阶乘问题,把一个数通过循环逐次减小并推入栈中,后pop()取出并相乘)。

    4.队列queue:也属于一种列表,队列只能在队尾插入元素,队首删除元素,类似于排队。队列是一种先入先出(FIFO)的数据结构,常用的方法是入队push(),出队shift(),可以用来实现基数排序(先按照个位数来排序 ,然后按照十位数排序)

    5.链表linkedlist:链表由一组节点组成,每个节点使用一个对象的引用指向它的后继,这个引用即为链。向连表中加入新节点,需要修改它前面的节点,使其指向自己,然后自己指向前面节点原来指向的节点,删除节点,只需要使前面的节点直接指向被删除节点后面的节点即可。

    6.字典dictionary:以键-值形式存储数据的数据结构。

    7.散列表 hashtable:散列表中数组的长度是预先设定的,所有元素根据该元素对应的键保存在数组的特定位置。这个键被映射为数字,数字的范围是0-散列表的长度。散列表中的数组的长度应该是一个质数。在散列表上插入删除和取用数组都非常快,但是查找数据很慢,比如查最大最小值。处理碰撞是重点。

    8.集合set:是一组无序但是彼此之间又有一定相关性的成员构成,每个成员在结构中只出现一次。对集合的操作有并集,交集和补集。

    9.二叉树:树是一种非线性的数据结构,已分层的方式存储数据。二叉树是一种特殊的树,它的子节点数不会超过两个。二叉查找树(BST)又是一种特殊的二叉树,相对较小的值保存在左节点,这使得查找的效率高。遍历有三种方式:先序,中序和后序。中序使用递归的方式实现,先访问左字树,在访问根节点,然后是右子树。先序是先访问根节点,然后同样的方式访问左子树和右子树。后序是先遍历访问子节点,从左字树到右子树,再到根节点。

    10.图Graph:这个真的有点难度。。学好以后在整理。

  • 相关阅读:
    mysql 分页查询及优化
    Mabatis中#{}和${}的区别
    mybatis 缓存(cache)的使用
    mac下安装 rabbitMq
    maven profile动态选择配置文件
    在pom.xml中使用distributionManagement将项目打包上传到nexus私服
    ConfigFileApplicationListener
    【Ubuntu 16】安装nginx
    【Ubuntu 16】安装ssh
    使用XMLHttpRequest异步通信
  • 原文地址:https://www.cnblogs.com/kirinchang/p/4329161.html
Copyright © 2011-2022 走看看