Javascript實現列表結構

來源:互聯網
上載者:User

標籤:list   header   添加元素   console   app   ble   +=   tostring   作者   

作者原文:http://hawkzz.com/blog/blog/1514966479779

簡介

最近,在看《資料結構與演算法 Javascript描述》,本篇文章,只是看書的筆記,算是重複造輪子;覺得有用的可以看看,覺得無用的,勿噴;

定義

列表是一組有序的資料,每個列表中的資料項目稱為元素,在Javascript中,列表中的元素可以是任意資料類型。不包含任何元素的列表稱為空白列表。

列表的抽象資料類型定義
抽象資料類型 定義
listSize(屬性) 列表的元素個數
pos(屬性) 列表的當前位置
length(屬性) 返回列表中的元素個數
clear(方法) 清空列表中的所有元素
toString(方法) 返回列表的字串形式
getElement(方法) 返回當前位置的元素
insert(方法) 在現有的元素後插入新元素
append(方法) 在列表的末尾添加新元素
remove(方法) 從列表中刪除元素
find(方法) 從列表中尋找元素的位置
front(方法) 將列表的當前位置移到第一個元素
end(方法) 將列表的當前位置移到最後一個元素
prev(方法) 將當前位置前移一位
next(方法) 將當前位置後移一位
currPos(方法) 返回列表的當前位置
moveTo(方法) 將當前位置移到到指定位置
contains(方法) 從列表中尋找元素是否存在
列表類的實現

1、建立List類

定義List建構函式,根據定義的列表抽象資料類型,建立一個List類

function List() {    this.dataList = [];    this.listSize = 0;    this.pos = 0;    this.len = length;    this.clear = clear;    this.toString = toString;    this.getEle = getEle;    this.insert = insert;    this.append = append;    this.remove = remove;    this.find = find;    this.front = front;    this.end = end;    this.prev = prev;    this.next = next;    this.currPos = currPos;    this.moveTo = moveTo;    this.contains = contains}

2、給列表添加元素:append

function append(ele) { //添加元素    this.listStze += 1;    this.dataList[this.listSize - 1] = ele;}

該方法往列表裡添加元素,先將列表擴容,然後添加元素;

3、查詢列表元素的位置:find

function find(ele){    for(var  i = 0; i < this.listSize; i++ ){        if(ele === this.dataList[i]){            return i;        }    }    return -1;}

該方法尋找元素的位置,如果找到就返回該元素的位置,否則就返回-1;

4、刪除列表元素:remove

function remove(ele) { //刪除元素    var index = this.find(ele);    if (index > -1) {        this.dataList.splice(index, 1);        this.listSize -= 1;        return true;    }    return false;}

該方法刪除列表元素,首先通過find()方法查詢是否存在該元素,如果存在這擷取其下標,通過splice()刪除該元素;並且列表長度減1;

5、查詢元素是否存在:contains

function contains(ele){    var index = this.find(ele);    if (index > -1) {        return true;    }    return false;}

6、插入元素:insert

function insert(ele, after) { //插入元素    var index = this.find(after);    if (index > -1) {        this.dataList.splice(index + 1, 0, ele);        this.listSize += 1;    }else{        this.append(ele);    }}

改方法實現往某個元素後面插入一個元素,首先使用find()方法查詢在列表中是否存在after元素,如果存在就在after元素後面,插入ele元素;如果不存在,就在列表最後面插入;

7、查詢列表長度:length

function length() { //列表長度    return this.listSize;}

8、清空列表:clear

function clear() { //清空列表    delete this.dataList;    this.dataList = [];    this.pos = 0;    return true;}

該方法清空列表,首先刪除舊的列表,然後建立新的列表,指標重設為0;

9、擷取當前位置的元素;getEle;

function getEle() {    return this.dataList[this.pos];}

10、設定當前位置為開頭:front

function front() { //設定當前位置是0    this.pos = 0;}

11、設定當前位置是最後一個元素的位置:end

function end() {     this.pos = this.listSize - 1;}

12、設定指標向前移一位:prev

function prev() {     if (this.pos > 0) {        this.pos -= 1;    } else {        this.front();    }}

13、設定指標向後移一位:next

function next() { //設定當前位置向後移動    if (this.pos < this.listSize - 1) {        this.pos += 1;    } else {        this.pos = this.end();    }}

14、擷取當前指標的位置:currPos

function currPos() { //返回當前位置    return this.pos;}

12、移動當指定位置:moveTo

function moveTo(position) { //移動當指定位置    if (position >= 0 && position <= this.listSize - 1) {        this.pos = position;        return true;    }    return false;}

13、列表迴圈

首先,建立列表;

var list = new List();

然後,向列表匯入資料

var arr = ['a','b','c','d','e'];for(var i = 0;i < arr.length ; i ++){    list.append(arr[i]);}

接著,迴圈列表

for(list.front;list.currPos < list.length(); list.next()){    console.log(list.getEle());}

或者

for(list.end();list.currPos >= 0 ; list.prev()){    console.log(list.getEle());}

Javascript實現列表結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.