J'essaie de créer un modèle fonctionnel de pile dans lequel l'utilisateur peut sélectionner la pile. s1
o s2
et peut effectuer des opérations telles que push
y pop
.
<html>
<head>
<title>Stack With Constructor </title>
</head>
<body>
<div>Stack </div>
<div>
<p id="p1">
stack
</p>
<input type="checkbox" name="stack1" value="s1">s1
<br>
<input type="checkbox" name="stack2" value="s2">s2
<br>
<textarea id="tdisplay"></textarea>
</div>
<textarea id="tpush"></textarea>
<button onclick="doJob()">push</button>
<button onclick="doJob1()">pop</button>
<textarea id="tpop"></textarea>
<script>
function myfunction() {
if (document.getElementById("stack1") == true) {
var s1 = new MyStack();
}
if (document.getElementById("stack2") == true) {
var s2 = new MyStack();
}
}
</script>
<script>
function push(v) {
if (this.st === 0) {
console.log("Stack Overflow");
} else {
this.st = this.st - 1;
this.stk[this.st] = v;
document.getElementById("tdisplay").value = this.print();;
}
}
function pop() {
if (this.st === 10) {
console.log("Stack Underflow");
} else {
document.getElementById("tdisplay").innerHTML = "";
var temp = this.stk[this.st];
this.st = this.st + 1;
return temp;
}
}
function print() {
console.log("Printing Stack");
return this.stk.reduce((acc, cv, i, arr, ) => {
console.log(cv);
return (i) ? acc + " " + "\n" + cv : cv;
}, '');
}
function MyStack() {
this.st = 10;
this.stk = new Array(10);
this.push = push;
this.pop = pop;
this.print = print;
}
function doJob() {
var x = document.getElementById("tpush").value;
s1.push(x);
document.getElementById("tpush").value = "";
}
function doJob1() {
var y = s1.pop();
document.getElementById("tpop").value = y;
document.getElementById("tdisplay").value = s1.print();
}
</script>
</body>
</html>
Je rencontre les problèmes suivants :
-
Je ne parviens pas à obtenir le résultat pour
pop
valeur. Cela signifie que lorsque j'appuie sur le bouton de pop, je dois obtenir les éléments restants du tableau. -
Je ne sais pas comment utiliser la méthode des cases à cocher. Cela signifie que lorsque je sélectionne
s1
la case à cocher doit être créées1
et je peux effectuer des opérations sur cette pile, de même que pour la piles2
.
Le résultat devrait être des fonctions de navigateur appropriées pour la pile interactive afin qu'elle puisse fonctionner comme dans les étapes suivantes :
- Sélection de l'utilisateur
s1
os2
pile - S'il choisit
s1
ils peuvent alors fonctionner pour toutes les opérations des1
. - L'utilisateur peut basculer entre
s2
et peut effectuer toutes les opérations.
J'ai des problèmes avec la fonction pop et la case à cocher.