• 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>
  • 相关阅读:
    docker安装nginx
    docker安装tomcat&部署javaweb程序
    linux/work
    Go语言入门篇-gRPC基于golang & java简单实现
    Go语言入门篇-jwt(json web token)权限验证
    Go语言入门篇-JSON&http调用
    Go语言入门篇-基本流程控制
    Go语言入门篇-基本类型排序和 slice 排序
    Go语言入门篇-高级数据类型
    Go语言入门篇-基本数据类型
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/7191866.html
Copyright © 2020-2023  润新知