你的位置:首页 > 软件开发 > Java > 用JS描述的数据结构及算法表示——栈和队列(基础版)

用JS描述的数据结构及算法表示——栈和队列(基础版)

发布时间:2016-08-27 00:00:08
前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里隐隐歌颂大神的厉害,然后别人的厉害不是我的,所以到底看得各种受打击+头昏脑涨,写 ...

前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里隐隐歌颂大神的厉害,然后别人的厉害不是我的,所以到底看得各种受打击+头昏脑涨,写这个系列是希望自己能够总结学到东一块、西一下的知识,因为水平有限+经验不足,所以在此只说最基础的思想,附上我自己的算法实现(肯定还有更优解),如果要想看进阶版的,可以在园里搜“数据结构”,各种语言实现和进阶提升的文章有很多,希望大家都能尽快打败数据结构这个纸老虎~

参考书是:数据结构(c++版)(第2版) 编者:王红梅、胡明、王涛

正文:

热身准备:

1、根据数据元素之间的不同关系,数据结构可以分为以下四种:

  (1)集合:数据元素之间的关系就是“属于同一集合”,除此之外,没有其他关系。(此关系过于简单,就不详述了)

  (2)线性结构:数据元素之间存在“一对一”的线性关系。

  (3)树结构:数据元素之间存在“一对多”的层级关系。

  (4)图结构:数据元素之间存在“多对多”的任意关系。

2、数据结构在计算机中的存储方式,主要有两种:顺序存储和链接存储。

3、线性结构在计算机中的实现,即线性表。当然根据存储方式的不同又可以分为:顺序表和链表。

  (1)顺序表:用一段地址连续的存储单元依次存储线性表的数据元素。通常用一维数组来实现。其数据元素间的关系由下标表现。

  (2)链表:最常见的是单链表。单链表是用一组任意的存储单元存放数据元素。其数据元素间的关系由指针表现。除去单链表外,常见的还有循环链表和双链表,都是在单链表的基础上增加了更多信  息,便于实现某些操作。

 

开始运动:

栈和队列都是某些功能受限制的线性表,所以它们有线性表的基本性质,但是更特别,也正是它们的特别之处才使得它们脱颖而出。

栈:限定仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端成为栈顶,另一端称为栈底,不含任何元素的栈称为空栈。

  栈具有FILO(first in last out)即先进后出的特性。

1、栈的基本操作:

push

  前置条件:栈已存在

  输入:元素值x

  功能:入栈操作,在栈顶插入一个元素x

  输出:如果插入不成功,则抛出异常

  后置条件:如果插入成功,则栈顶增加一个元素

pop

  前置条件:栈已存在

  输入:无

  功能:出栈操作,删除栈顶元素

  输出:如果删除成功,返回被删除元素,否则抛出异常

  后置条件:如果删除成功,则栈顶减少一个元素

getTop

  前置条件:栈已存在

  输入:无

  功能:取栈顶元素,读取当前的栈顶元素

  输出:如栈不空,返回当前的栈顶元素

  后置条件:栈不变

2、顺序栈

function SeqStack(){  this._stack = []; //栈  this._top = -1;  //栈顶指针}SeqStack.prototype = {  _push:function(x){

原标题:用JS描述的数据结构及算法表示——栈和队列(基础版)

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。