JavaScript: Kellerspeicher - Stack

Mit einfachen Übungsaufgaben sollen die Grundstrukturen der Programmierung erlernt werden (Iteration, Alternative, Rekursion, Felder) Komplexere Übungsaufgaben vermitteln außerdem Inhalte aus Mathematik und Informatik (Algorithmen, Datenstrukturen, Codierung). Implementierung eines Planspiels
Implementierung der Simulation in Javasript.
Implementierung eines einfachen Fuzzy Controllers
Einführung selfhtml Einführung HTML Fenster,  Layer, HTML generieren
Copyright:  Holzbaur, Aalen, E-Mail an Verfasser

Der Kellerspeicher ist ein beliebtes Beispiel für Datenkapselung.  Der Kellerspeicher funktioniert nach dem LIFO-Prinzip, last in - first out wie ein Stapel oder eine Grube: was zuletzt abgelegt wurde wird als erstes wieder abgeholt. Im folgenden Beispiel bekommt der Benutzer vom Kellerspeicher nur die Grundoperationen mit.

Für den Kellerspeicher gibt es verschiedene Implementierungsmöglichkeiten, von denen einige hier (aber nicht alle heute abend) implementiert werden sollen.

Array

Aufrufe Implementierung Bemerkung
function drauflegen()
   {x=prompt("Element: "); push(x)};
function runterholen ()
   if (count()>0) {alert("Das oberste Element war: "+ pop())} 
      else alert("leider leer"); }
function wieviele() 
   {alert("es sind "+count()+" Elemente")}
stack=new Array()
index=-1
function push(x){ index++; stack[index]=x};
function pop() { 
   if (index >= 0) {  x= stack[index]; index--; return x    } 
      else { alert("leer"); return false} };
function count() { return 1.0 + index };
index zeigt auf den 
letzten 
belegten Platz

Object Array

Aufrufe Implementierung Bemerkung
function drauflegeno()
   {x=prompt("Element: "); pusho(x)};
function runterholeno()
   if (counto()>0) {alert("Das oberste Element war: "+ popo())} 
      else alert("leider leer"); }
function wievieleo() 
   {alert("es sind "+counto()+" Elemente")}
stack=new Array()
function pusho(x){stack.push(x)};
function pop0() {  
   if (stack.length >=0) {
   x= stack[stack.length]; stack.pop() }
      else { alert("leer"); return false}
} ;
function counto() { return stack.length };
Array.pop 
entfernt nurdas 
oberste Element

Manuell

Aufrufe Implementierung Bemerkung
function drauflegenm() {x=prompt("Element: "); pushm(x)};
function runterholenm ()
   if (countm()>0) {alert("Das oberste Element war: "+ popm())} 
      else alert("leider leer"); }
function wievielem()  {alert("es sind "+countm()+" Elemente")}
n=0
function pushm(x) 
   { d=c; c=b, b=a; a=x; if(n<4) n++ };
function popm() 
    { if ( n > 0 ) { x=a; a=b; b= c; c=d; n--} };
function countm() { return n };
Der Keller besteht 
aus 4 Zellen: a,b,c,d