美文网首页JavaScript与数据结构
JavaScript数据结构3——静态链表

JavaScript数据结构3——静态链表

作者: RichardW | 来源:发表于2017-03-19 14:23 被阅读0次

静态链表是用数组来实现链表的基本操作,对于没有引用功能和指针功能的语言,是不错的选择,下面的程序实现了以下的功能

  • 读取
  • 插入
  • 删除
var list_max_size = 10;
//静态链表基本元素
function Compontent(data,cur) {
    this.data = data;//数据
    this.cur = cur;//游标
}
//获得一个初始化的静态链表
function initList() {
    for(var i=0;i<list_max_size-1;i++){
        list[i] = new Compontent(null,i+1);
    }
    //数组的最后一位要存放第一个元素的下标
    //数组的第一个元素存放备用链表的第一个节点的下表
    list[list_max_size-1] = new Compontent(null,0);
}
//申请新元素
//若备用链表非空,返回分配的结点下标,否则返回0
function mallocSll() {
    var i = list[0].cur;
    if(i){
        list[0].cur = list[i].cur;
    }
    return i;
}
//插入
function insertList(i,data) {
    var j,k;
    k = list_max_size-1;
    if(i<1||i>list.length+1){
        return 1;
    }
    j = mallocSll(list);
    if(j){
        list[j].data = data;
        //获取i位置前面的元素
        for(var l=1;l<=i-1;l++){
            k = list[k].cur;
        }
        list[j].cur = list[k].cur
        list[k].cur = j;
        return 0;
    }
    return 1;
}
//删除第i个元素
function deleteComponent(i){
    if(i<1||i>list.length){
        return 1;
    }
    k = list_max_size-1;
    for (var j = 1; j <=i-1; j++) {
        k = list[k].cur;
    }
    j = list[k].cur;
    list[k].cur = list[j].cur;
    list[j].cur = list[0].cur;
    list[j].data = null;
    list[0].cur = j;
}
//读取链表
function readList(){
    var l = 0;
    var string = '';
    do{
        l = list[l].cur;
        if(list[l].data!=null){
            string += list[l].data;
        }
    }
    while(l!=0);
    return string;
}
var list = new Array(list_max_size);
initList();
console.info(JSON.stringify(list));
insertList(1,1);
console.info('建立第一个元素\n'+JSON.stringify(list));
console.info('建立第一个元素:'+readList());
insertList(1,2);
console.info('在第一个元素前面插入一个数据\n'+JSON.stringify(list));
console.info('在第一个元素前面插入一个数据:'+readList());
insertList(2,3);
console.info('在第二个元素前面插入一个数据\n'+JSON.stringify(list));
console.info('在第二个元素前面插入一个数据:'+readList());
deleteComponent(2);
console.info('删除第二个元素\n'+JSON.stringify(list));
console.info('删除第二个元素:'+readList());

打印到控制台的结果

[{"data":null,"cur":1},{"data":null,"cur":2},{"data":null,"cur":3},{"data":null,"cur":4},{"data":null,"cur":5},{"data":null,"cur":6},{"data":null,"cur":7},{"data":null,"cur":8},{"data":null,"cur":9},{"data":null,"cur":0}]
建立第一个元素
[{"data":null,"cur":2},{"data":1,"cur":0},{"data":null,"cur":3},{"data":null,"cur":4},{"data":null,"cur":5},{"data":null,"cur":6},{"data":null,"cur":7},{"data":null,"cur":8},{"data":null,"cur":9},{"data":null,"cur":1}]
建立第一个元素:1
在第一个元素前面插入一个数据
[{"data":null,"cur":3},{"data":1,"cur":0},{"data":2,"cur":1},{"data":null,"cur":4},{"data":null,"cur":5},{"data":null,"cur":6},{"data":null,"cur":7},{"data":null,"cur":8},{"data":null,"cur":9},{"data":null,"cur":2}]
在第一个元素前面插入一个数据:21
在第二个元素前面插入一个数据
[{"data":null,"cur":4},{"data":1,"cur":0},{"data":2,"cur":3},{"data":3,"cur":1},{"data":null,"cur":5},{"data":null,"cur":6},{"data":null,"cur":7},{"data":null,"cur":8},{"data":null,"cur":9},{"data":null,"cur":2}]
在第二个元素前面插入一个数据:231
删除第二个元素
[{"data":null,"cur":3},{"data":1,"cur":0},{"data":2,"cur":1},{"data":null,"cur":4},{"data":null,"cur":5},{"data":null,"cur":6},{"data":null,"cur":7},{"data":null,"cur":8},{"data":null,"cur":9},{"data":null,"cur":2}]
删除第二个元素:21
[Finished in 0.2s]

相关文章

  • JavaScript数据结构3——静态链表

    静态链表是用数组来实现链表的基本操作,对于没有引用功能和指针功能的语言,是不错的选择,下面的程序实现了以下的功能 ...

  • 常见的数据结构

    常见的数据结构有: 数组 链表单链表、双向链表、循环链表、双向循环链表、静态链表 栈顺序栈、链式栈 队列普通队列、...

  • 数据结构(静态链表的基础操作)

    静态链表的基础操作的前提是已经成功创建静态链表的基础上 静态链表中添加元素 加入将元素4添加到上静态链表中第3个位...

  • JS数据结构-链表

    首先链表是一种数据结构,JavaScript中并没有链表,但是可以用Object模拟链表,所以在JavaScrip...

  • JavaScript 中的深拷贝和浅拷贝

    JavaScript 内存中的堆和栈 栈(stack):堆是 JavaScript 用来存储静态数据的数据结构。静...

  • 数据结构基础2

    1.单链表的数据结构+案例2.双链表的数据结构+案例3.栈的数据结构(双向链表+数组实现) + 案例4.队列的数据...

  • 静态链表及C#实现

    静态链表 静态链表是用数组模拟动态链表。 静态链表结构描述 首先,静态链表使用数组来模拟动态链表。数组存放一个节点...

  • PHP 实现数据结构

    参考诸多视频和文章,主要通过PHP 实现线性表的顺序存储结构,单链表,静态链表,双向链表以及二叉树等数据结构,代码...

  • 数据结构:静态链表

    什么叫静态链表? 用数组描述的链表叫做静态链表,这种描述方法叫做游标实现法。 如何用数组了描述呢 ?简单的说,就是...

  • 数据结构 — 静态链表

    单链表的相对劣势 单链表的实现严重依赖指针 数据元素中必须包含一个额外的指针域 没有指针的程序设计语言无法实现 静...

网友评论

    本文标题:JavaScript数据结构3——静态链表

    本文链接:https://www.haomeiwen.com/subject/cjimnttx.html