博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript数据结构
阅读量:653 次
发布时间:2019-03-15

本文共 6235 字,大约阅读时间需要 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/

你可能感兴趣的文章