博客
关于我
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 复杂查询_mysql中复杂查询
查看>>
mYSQL 外键约束
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>
mySQL 多个表求多个count
查看>>
mysql 多字段删除重复数据,保留最小id数据
查看>>
MySQL 多表联合查询:UNION 和 JOIN 分析
查看>>
MySQL 大数据量快速插入方法和语句优化
查看>>
mysql 如何给SQL添加索引
查看>>
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>