Ocena użytkownikóww: ***** / 3
Nadesłany przez Jakub Szczeklik, 02 kwietnia 2011 01:41
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
stos_1_js.js:
/*
Stos
www.algorytm.org
przykład uzycia:
var stos = new stack({ max_elements:2, erase_last_when_full:true });
stos.push('string');
stos.push(123);
stos.push(function() { var zmienna = 'przykladowa funkcja'; });
alert(stos.pop());
alert(stos.pop());
*/
var stack = function(settings) {
// opcje ( stanardowe ustawienia )
var options = {
max_elements: 0, // maksymalna ilosc elemntow, 0 - nieskonczenie wiele
erase_last_when_full: false // czy usuwac element ze spodu w przypadku przekroczenia maksymalnej ilosci elementow
};
var elements = {};
var nr_element = 0;
if(typeof settings !== 'object') settings = {};
// nadpisuje ustawienia nadane przez uzytkownika
for(var opt in options) {
if(!!settings[opt]) {
options[opt] = settings[opt];
}
}
return {
// ilość przechowywanych elementów
size: function() {
return nr_element;
},
// czy stos jest pusty
empty: function() {
return nr_element==0;
},
// dodaj nowy element
push: function(new_elm) {
if(options.max_elements == 0 || nr_element < options.max_elements) {
elements[nr_element] = new_elm;
nr_element++;
return true;
} else if(options.erase_last_when_full) {
delete elements[0];
for(var i=1;i<options.max_elements;i++) {
elements[i-1] = elements[i];
}
elements[options.max_elements-1] = new_elm;
return true;
} else {
return false;
}
},
// pobierz element
pop: function() {
if(!this.empty()) {
nr_element--;
var tmp = elements[nr_element];
elements[nr_element] = null;
return tmp;
}
return false;
},
// wyczysc stos
clear: function() {
var tmp = false;
for(var i=0;i<nr_element;i++) {
tmp = true;
delete elements[i];
elements[i] = null;
}
nr_element = 0;
return tmp;
}
};
};