zoukankan      html  css  js  c++  java
  • JavaScript数据结构-3.List

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>List实现</title>
      6     </head>
      7     <body>
      8         <script>
      9             /*列表的抽象数据类型定义:
     10                 listSize  属性   列表中元素个数
     11                 pos       属性   列表的当前位置
     12                 length    属性   返回列表中元素的个数
     13                 clear     方法   清空列表中的所有元素
     14                 toString  方法   返回列表的字符串形式
     15                 getElement方法   返回当前位置的元素
     16                 insert    方法   在现有元素后插入新的元素
     17                 append    方法   在列表的末尾添加新元素
     18                 remove    方法   从列表中删除元素
     19                 front     方法   将列表的当前位置移动到第一元素
     20                 end       方法  将列表的当前位置移动到最后一个元素
     21                 prev        方法    将当前位置上移一位
     22                 next      方法   将当前位置下移一位
     23                 currPos   方法    返回列表当前位置
     24                 moveTo    方法   将当前位置移动到指定位置
     25               */
     26              
     27              //实现列表类
     28              function List(){
     29                  this.listSize = 0;
     30                  this.pos = 0;
     31                  this.arr = [];
     32                    this.clear = clear;
     33                  this.find = find;
     34                  this.toString = toString;
     35                    this.insert = insert;
     36                    this.append = append;
     37                  this.remove = remove;
     38                    this.front = front;
     39                    this.end = end;
     40                    this.prev = prev;
     41                    this.next = next;
     42                    this.currPos = currPos;
     43                    this.moveTo = moveTo;
     44                    this.getElement = getElement;
     45                    this.length = length;
     46                    this.contans = contains;
     47              }
     48              
     49              //append方法
     50              function append(ele){
     51                  this.arr[this.listSize++] = ele;
     52              }
     53              
     54              //查找元素的位置
     55              function find(ele){
     56                  for(var i=0;i<this.arr.length;i++){
     57                      if(this.arr[i] == ele){
     58                          return i
     59                      }
     60                  }
     61                  return -1;
     62              }
     63              
     64              //删除元素
     65              function remove(ele){
     66                  var index = this.find(ele);
     67                  if(index >-1){
     68                      this.arr.splice(index,1);
     69                      this.listSize--;
     70                      return true
     71                  }
     72                  return false
     73              }
     74              
     75              //列表长度
     76              function length(){
     77                  return this.listSize;
     78              }
     79              
     80              //显示列表中的元素
     81              function toString(){
     82                  return this.arr;
     83              }
     84              
     85              
     86              var obj = new List();
     87              obj.append("zhangsan");
     88              obj.append("lisi");
     89              obj.append("zhaowu");
     90              console.log(obj.toString());
     91              console.log(obj.length());
     92              obj.remove("lisi");
     93              console.log(obj.toString());
     94              
     95              //插入元素
     96              function insert(ele,after){
     97                  var insertPos = this.find(after);
     98                  if(insertPos > -1){
     99                      this.arr.splice(insertPos+1,0,ele);
    100                      this.listSize++;
    101                      return true;
    102                  }
    103                  return false;
    104              }
    105              
    106              //清空元素
    107              function clear(){
    108                  delete this.arr;
    109                  this.arr = [];
    110                  this.listSize = this.pos = 0;
    111              }
    112              
    113              //给定值是否在列表中
    114              function contains(ele){
    115                  for(var i=0;i<this.arr.length;i++){
    116                      if(this.arr[i] == ele){
    117                          return true;
    118                      }
    119                  }
    120                  return false;
    121              }
    122              
    123              //遍历列表
    124              function front(){
    125                  this.pos = 0;
    126              }
    127              function end(){
    128                  this.pos = this.listSize - 1; 
    129              }
    130              function prev(){
    131                  if(this.pos>0){
    132                      --this.pos;
    133                  }
    134              }
    135              function next(){
    136                  if(this.pos < this.listSize - 1){
    137                      ++this.pos;
    138                  }
    139              }
    140              function currPos(){
    141                  return this.pos;
    142              }
    143              function moveTo(position){
    144                  this.pos = position;
    145              }
    146              
    147              function getElement(){
    148                  return this.arr[this.pos];
    149              }
    150              
    151              
    152              var names = new List();
    153              names.append("zhangsan");
    154              names.append("lisi");
    155              names.append("wangwu");
    156              names.append("zhaoliu");
    157              
    158              names.front();
    159              console.log(names.getElement());
    160              names.next();
    161              console.log(names.getElement());
    162              names.prev();
    163              console.log(names.getElement());
    164              
    165              // 使用迭代器访问列表
    166              for(names.front();names.currPos()<=names.length();names.next()){
    167                  console.log(names.getElement(),"正序");
    168                  
    169                  //由于prev()和 next() 做了判断,为避免死循环,这里也要做判断  下面也一样
    170                    if(names.currPos() == names.length()-1)  break;
    171              }
    172              
    173              for(names.end();names.currPos() >=0;names.prev()){
    174                  console.log(names.getElement(),"反序");
    175                 if(names.currPos() == 0)  break;
    176              }
    177              
    178              
    179              
    180         </script>
    181     </body>
    182 </html>
  • 相关阅读:
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
    40个Java多线程问题总结
    Windows10实用技巧-固定快捷方式到磁贴菜单方式
    wordpress初始化安装
    xshell输入奇怪,空格间距变大
    Python2和Python3共存安装
    搭建nginx反向代理用做内网域名转发
    下载网页视频音频方法(djyeye为例)
    Dell 戴尔预装Windows8改成Windows7
    Nginx基本功能极速入门
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/7191866.html
Copyright © 2011-2022 走看看