博客
关于我
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/

你可能感兴趣的文章
LiveGBS user/save 逻辑缺陷漏洞复现(CNVD-2023-72138)
查看>>
localhost:5000在MacOS V12(蒙特利)中不可用
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
Moment.js常见用法总结
查看>>