zoukankan      html  css  js  c++  java
  • javascript数据结构之顺序表

    关于线性表的概念这里就不赘述了,可以自行百度和查阅资料,线性表按照存储(物理)结构分为顺序存储和链式存储,每种存储方式的不同决定了它的实现代码是不同的:

    顺序存储的特点就是在内存中选一块连续的地址空间,然后将线性表放入其中,这样做便于线性表的存取,但是不利于插入和删除,而且在事先无法确定线性表长度的前提下可能会造成内存浪费或溢出。

    这篇我是用javascript来实现线性表中的顺序表。

     下面上代码:

     1 var orderList = function(){
     2   var items = [];  //线性表内部定义一个容量为10的数组用来存储数据
     3   this.items = items; //这里利用了数组是引用类型,实例属性和局部变量其实是指向同一个数组的
     4 
     5   this.findElem = function(data){ //在表中寻找元素,返回对应的地址位置
     6     var Symbol = false;
     7     var temp = 0;
     8     for(var i = 0;i < items.length;i++){
     9       if(items[i] == data){
    10         Symbol = true;
    11         temp = i+1;
    12       }
    13     }
    14     if(Symbol){
    15         return temp;
    16     }
    17   };
    18 
    19   this.getElem = function(num){ //获得元素操作,返回获得的元素
    20     if(num > items.length || num < 1 || items.length == 0){
    21       return false;
    22     }else{
    23       return items[num - 1]; //注意数组下标是从0开始的
    24     }
    25   };
    26 
    27   this.ListInsert = function(data,pos){ //插入元素操作,返回新的数组
    28     if(pos > items.length || pos < 1 || items.length == 0){
    29       return false;
    30     }else{
    31       for(var i = items.length;i >= pos-1;i -= 1){
    32         items[i+1] = items[i];
    33       }
    34       items[pos-1] = data;
    35       return items;
    36     }
    37   };
    38 
    39   this.ListDelete = function(pos){ //删除元素操作,返回删除的元素
    40     var temp = items[pos-1];
    41     if(pos < 1 || pos > items.length || items.length == 0){
    42       return false;
    43     }else{
    44       for(var i = pos;i < items.length;i++){
    45         items[i-1] = items[i];
    46       }
    47       return temp;
    48     }
    49   };
    50 
    51 
    52 };
    53 
    54 //实例化测试一下
    55 var list = new orderList();
    56 list.items.push("a","b","c","d","e","f","g");
    57 console.log(list.items);
    58 console.log(list.findElem("c"));
    59 console.log(list.getElem(1));
    60 console.log(list.ListInsert("j",3));
    61 console.log(list.ListDelete(2));
    62 console.log(list.items);

    下面是在chrome的console里面调试的结果,亲测无误。

  • 相关阅读:
    【专题总结】数学(未完)
    如何使用SOCKS代理通过aiohttp发出请求?(How to use SOCKS proxies to make requests with aiohttp?)
    通过 alembic 重命名表列名(Model字段名)
    Supervisor使用详解
    MySQL创建数据库并设置字符集
    手动配置代理,让终端上网
    mac下镜像飞速安装Homebrew教程
    Python3.8 异步 asyncio
    PHP版本微信支付开发
    PHP对接支付宝支付接口
  • 原文地址:https://www.cnblogs.com/jeavenwong/p/7355128.html
Copyright © 2011-2022 走看看