一些資料結構的封裝,未完待續
/**
* 棧的封裝
*/function
stack
() ;
this.pop = function
(element) ;
this.peek = function
() ;
this.size = function
() ;
this.isempty = function
() ;
this.clear = function
() ;
this.print = function
() ;
}/**
* 十進位制數轉換為二進位制數
* @param decnumber 十進位制數
* @return 二進位制數
*/function
divideby2
(decnumber)
while (decnumber > 0)
while (!mystack.isempty())
return binarystring;
}// console.log(divideby2(233));
/** * 十進位制數轉換為n(n >= 1 && n <= 16) 進製數
* @param decnumber 十進位制數
* @param base n進製
* @return n進製數
*/function
baseconverter
(decnumber, base)
while (decnumber > 0)
while (!mystack.isempty())
return resstring;
}// console.log(baseconverter(100345, 8));
/** * 佇列分裝
*/function
queue
() ;
this.dequeue = function
(element) ;
this.front = function
() ;
this.size = function
() ;
this.isempty = function
() ;
this.clear = function
() ;
this.print = function
() ;
}var myqueue = new queue();
// console.log(myqueue.isempty());
/** * 優先佇列,權重越小越優先
*/function
priorityqueue
() this.enqueue = function
(element) ;
this.dequeue = function
(element) ;
this.front = function
() ;
this.size = function
() ;
this.isempty = function
() ;
this.clear = function
() ;
this.print = function
() ;
this.enqueue = function
(element, priority) else
}if (!isadd) }};
}// var priorityqueue = new priorityqueue();
// priorityqueue.enqueue('john', 2);
// priorityqueue.enqueue('jack', 1);
// priorityqueue.enqueue('cam', 1);
// priorityqueue.print();
// /**
* 集合封裝
*/function
set() ,
length = 0;
this.has = function
( ) ;
this.add = function
(value) else
};this.remove = function
(value) else
};this.clear = function
() ;
};this.size = function
() ;
this.values = function
() return keys;
};this.print = function
() ;
this.getunion = function
(otherset)
return unionset;
};this.getintersection = function
(otherset)
}return intersectionset;
};this.getdifference = function
(otherset)
}return differenceset;
};this.issubset = function
(otherset)
}return subsetflag ? true : false;
};}// var seta = new set();
// seta.add(1);
// seta.add(2);
// seta.add(3);
// var setb = new set();
// setb.add(4);
// setb.add(2);
// setb.add(3);
// var setunionab = seta.getunion(setb);
// setunionab.print();
// var setinsersectionab = seta.getintersection(setb);
// setinsersectionab.print();
// var setdifferenceab = seta.getdifference(setb);
// setdifferenceab.print();
// console.log(setb.issubset(seta));
/** * map封裝
*/function
map() ,
length = 0;
this.has = function
(key) ;
this.set = function
(key, valus) ;
this.get = function
(key) ;
this.values = function
() }
return values;
};this.keys = function
() }
return keys;
};this.remove = function
(key) else
};this.clear = function
() ;
};this.size = function
() ;
this.getitems = function
() ;
this.print = function
() ;
}
資料結構與演算法二
資料結構作為一門學科主要研究資料的各種邏輯結構和儲存結構,以及對資料的各種操作。因此,主要有三個方面的內容 資料的邏輯結構 資料的物理儲存結構 對資料的操作 或演算法 通常,演算法的設計取決於資料的邏輯結構,演算法的實現取決於資料的物理儲存結構。邏輯結構 是指資料物件中資料元素之間的相互關係。其實這...
資料結構與演算法(二)
函式的漸近增長 給定兩個函式 f n 和 g n 如果存在乙個整數n,使得對於所有的n n,f n 總是比g n 大,那麼我們說f n 的增長漸近快於g n 如圖 演算法時間複雜度的定義 在進行時間演算法分析時,語句總的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t ...
資料結構與演算法 二
佇列是一種特殊的線性表 線性結構 特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列按照邏輯資料結構可以分為順序佇列和迴圈佇列....