美文网首页
JS数据结构代码

JS数据结构代码

作者: 尼古拉苏 | 来源:发表于2018-07-19 10:03 被阅读0次

    队列

    function Queue(){
        var self=this;
        self.dataStore = [];
    
        var front = self.dataStore[0];
        var back= self.dataStore[self.dataStore.length-1];
        var count=self.dataStore.length;
    
        var update=function(){
            front = self.dataStore[0];
            self.front=front;
            back= self.dataStore[self.dataStore.length-1];
            self.back=back;
            count=self.dataStore.length;
            self.count=count;
        }
    
        var push=function(value){
            self.dataStore.push(value);
            update();
        }
    
        var shift=function(){
            var obj=self.dataStore.shift();
            update();
            return obj;
        }
    
        var toString=function(){
            var retStr = "";
            for (var i=0; i<self.dataStore.length; ++i) {
                retStr += self.dataStore[i] + " "
            }
            return retStr;
        }
    
        var isEmpty=function(){
            if(self.dataStore.length == 0){
                return true;
            }else{
                return false;
            }
        }
    
        self.push = push;
        self.shift = shift;
        self.front = front;
        self.back = back;
        self.toString = toString;
        self.isEmpty = isEmpty;
        self.count = count;
    }
    

    单链表

    function List(){
        var self=this;
        var head=null;
        var length=0;
    
        function Node(element){
            this.element=element;
            this.next=null;
        }
    
        this.show_all=function(){
            console.log(head);
        }
    
        this.size=function(){
            return length;
        }
    
        this.find_last=function(){
            var last,next;
            if (head!=null) {
                next=head;
                while (next.next) {
                    next=next.next;
                }
                last=next;
            }else{
                last=null;
            }
            return last;
        }
    
        this.find_ele=function(element){
            var last,next;
            var result=[];
            if (head!=null) {
                next=head;
                if (next.element==element) {
                    last=next;
                    result.push(last);
                }
                while (next.next) {
                    next=next.next;
                    if (next.element==element) {
                        last=next;
                        result.push(last);
                    }
                }
            }else{
                last=null;
            }
            return result;
        }
    
        this.find_id=function(index){
            var last,next;
            var number=0;
            if (index>length-1) {
                return null;
            }
            if (head!=null) {
                next=head;
                while (next.next) {
                    if (index===number) {
                        last=next;
                        break;
                    }
                    number=number+1
                    next=next.next;
                }
                last=next;
            }else{
                last=null;
            }
            return last;
        }
    
        this.delete=function(element){
            var current;
            if (length==0) {
                self.show_all();;
                return;
            }
            if (head.element==element) {
                head=head.next;
                length=length-1;
                self.show_all();;
                return;
            }
            current=head;
            while (current) {
                if (current.next&&current.next.element==element) {
                    current.next=current.next.next;
                    length=length-1;
                }
                current=current.next;
            }
            self.show_all();;
            return;
        }
    
        this.add=function(element){
            var node=new Node(element);
            var next;
            if (head==null) {
                head=node;
                length=1;
            }else{
                next=head;
                while (next.next) {
                    next=next.next;
                }
                next.next=node;
                length=length+1;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:JS数据结构代码

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