博客
关于我
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 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>
mysql 表的操作
查看>>
mysql 视图,视图更新删除
查看>>
MySQL 触发器
查看>>
mysql 让所有IP访问数据库
查看>>
mysql 记录的增删改查
查看>>
MySQL 设置数据库的隔离级别
查看>>
MySQL 证明为什么用limit时,offset很大会影响性能
查看>>
Mysql 语句操作索引SQL语句
查看>>
MySQL 误操作后数据恢复(update,delete忘加where条件)
查看>>
MySQL 调优/优化的 101 个建议!
查看>>
mysql 转义字符用法_MySql 转义字符的使用说明
查看>>
mysql 输入密码秒退
查看>>
mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
查看>>