博客
关于我
javascript数据结构
阅读量:655 次
发布时间:2019-03-15

本文共 6152 字,大约阅读时间需要 20 分钟。

var Stack = function(){   	var items = [] //私有属性	this.push = function(element){   		items.push(element)	}	this.pop = function(){   		return items.pop();		}	this.peek = function(){   //栈顶元素		return items[items.length-1];	}	this.isEmpty = function(){   //判断为空		return items.length == 0		}	this.clean = function(){   //清除栈		items=[];		}	this.size = function(){   //返回长度		return items.length	}}var zhan = new Stack;

队列

var Queue = function(){   //队列    var item = [];    //入队列    this.enqueue = function(element){           item.push(element);    }    //出队列    this.dequeue = function(){           return item.shift();    }    //查看队列头部    this.front = function(){           return item[0];    }    //检查队列是否为空    this.isEmpty = function(){           return item.length === 0;    }    //队列大小    this.Size = function(){           return item.length;    }}

集合

var Set = function(){      var item = {   };   var length = 0;   this.has=function(value){         if(item.hasOwnproperty(value)){             return true;      }else{             return false;       }   }   this.add = function(value){          if(this.has(value)){              return false       }else{             item[value]=value;          return value;          length++;       }          }   this.remove = function(value){        if(this.has(value)){            delete item[value];         return true;         length--;     }else{            return false;     }   }   this.getItem= function(){          return item;   }   this.clear = function(){          item={   };   }   this.getSize = function(){          return  length;   }    }var set = new Set;//实例化集合

链表

var LinkList = function (){    	var head = null;//头部 	var length =0; 	var Node = function(element){   		this.element=element;		this.next=null	}	this.append = function(element){   		var node = new Node(element);		if(head==null){   			head = node		}else{           	var current = head;        	while(current.next){   				current = current.next				}			//while循环之后current就是链表的最后一项			current.next = node;		}	}	this.getHead = function(){   		return head;//返回链表头	}	this.insert = function(element,position){   //插入元素		if(position > -1 && position < length){   			var node = new Node(element);			if(position == 0){   					var current = head;					head = node;					head.next=current			}else{   				 	var index = 0;				 	var current = head;				 	var previous = null;				 	while(index
-1&&position

哈希表

哈希冲突

var HashCode = function(){   	var items= [];	var loseHashCode = function(key){   //散列函数		var hash = 0;		for(var i=0;i

var Tree = function(){       var Node =function(value){           this.value=value;        this.left=null;        this.right=null;    }    var root = null;    this.insertNode = function(node,newNode){           if(newnode.value >= node.value){               if(node.right==null){                   node.right = newnode            }else{                   insertNode(node.right,newnode);            }        }else if(newnode.value < node.value){               if(node.left==null){                   node.left = newnode;            }else{                   insertNode(node.left,newnode);            }        }    }    this.insert = function(value){           var newnode = new Node(value);        if(root==null){               root=newnode;        }else{               insertNode(root,newNode);        }    }    this.search = function(value){           if(root>value){           } else{           }    }    var traverNode = function(node,callback){           if(node==null) return       // callback(node.value);//前序遍历        traverNode(node.left,callback);       // callback(node.value); //中序遍历        traverNode(node.right,callback);        callback(node.value);//后序遍历    }    this.traver = function(callback){          traverNode(root,callback);     }    this.getRoot = function(){          return root;     }    this.getMax = function(){           if(root==null) return null        while(node.right && node){               node=node.right        }        return node;    }    this.getMin = function(){           if(root==null) return null;        while(node.left && node){               node=node.left        }        return node;    }    var findMinRight = function(node){           if(node==null) return null        getMin(node.right);    }    var removeNode = function(node,value){           if(root==null) return null;        if(value > node.value){               //向右查找            node.right= removeNode(node.right,value);            return node;        }else if(value < node.value){               //向左查找            node.left= removeNode(node.left,value);            return node;        }else{               //叶子节点            if(node.left == null && node.right == null){                   return null;            }            //只有一个子节点            if(node.left == null && node.right){                   return node.right;            }else if(node.right ==null &&node.left){                   return node.left;            }            //有两个子节点            var tempnode = findMinRight(node);            node.value = tempnode.value;            node.right = removeNode(node.right,tempnode.value);            return node;        }    }    this.remove = function(key){          root = removeNode(root,key);    }}var tree = new Tree;//实例化树

var Queue = function(){   //队列    var item = [];    //入队列    this.enqueue = function(element){           item.push(element);    }    //出队列    this.dequeue = function(){           return item.shift();    }    //查看队列头部    this.front = function(){           return item[0];    }    //检查队列是否为空    this.isEmpty = function(){           return item.length === 0;    }    //队列大小    this.Size = function(){           return item.length;    }}var Graph = function(){       var vertical = [];//顶点    var adjlist = {   };//连接的边    this.addVercial = function(value){        vertical.push(value);     adjlist[value] = [];    }    this.addAdjlist = function(dot1,dot2){       adjlist[dot1].push(dot2);    adjlist[dot2].push(dot1);    }    this.print = function(){           var  n ='\n';        for(var i=0;i
'; var bian = adjlist[dot]; for(var j=0;j

转载地址:http://lfymz.baihongyu.com/

你可能感兴趣的文章
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
MySQL DBA 进阶知识详解
查看>>
Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
查看>>
Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
查看>>