博客
关于我
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 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>