Dans Java, les tailles de tableau sont toujours de longueur fixe, mais il existe un moyen d'augmenter dynamiquement la taille de la matrice lors de l'exécution elle-même.
C'est la manière la plus "utilisée" et la plus préférée de le faire.
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
Dans le code ci-dessus, nous initialisons un nouveau tableau temp [], et en outre, nous utilisons une boucle for pour initialiser le contenu du temp avec le contenu du tableau d'origine, c'est-à-dire. stck []. Et puis de nouveau le recopier dans l'original, nous donnant un nouveau tableau de nouveau SIZE.
Il ne fait aucun doute qu'il génère une surcharge du processeur en raison de la réinitialisation répétée d'un tableau en utilisant la boucle for. Mais vous pouvez toujours l'utiliser et l'implémenter dans votre code. Pour la meilleure pratique, utilisez "Linked List" au lieu de Array, si vous voulez que les données soient stockées dynamiquement dans la mémoire, de longueur variable.
Voici un exemple en temps réel basé sur des piles dynamiques pour AUGMENTER LA TAILLE DU TABLEAU au moment de l'exécution
Nom de fichier: DStack.java
public class DStack {
private int stck[];
int tos;
void Init_Stck(int size) {
stck=new int[size];
tos=-1;
}
int Change_Stck(int size){
return stck[size];
}
public void push(int item){
if(tos==stck.length-1){
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
stck[++tos]=item;
}
else
stck[++tos]=item;
}
public int pop(){
if(tos<0){
System.out.println("Stack Underflow");
return 0;
}
else return stck[tos--];
}
public void display(){
for(int x=0;x<stck.length;x++){
System.out.print(stck[x]+" ");
}
System.out.println();
}
}
Nom de fichier: Exec.java
(avec la classe principale)
import java.util.*;
public class Exec {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int option,item,i=1;
DStack obj=new DStack();
obj.Init_Stck(1);
do{
System.out.println();
System.out.println("--MENU--");
System.out.println("1. Push a Value in The Stack");
System.out.println("2. Pop a Value from the Stack");
System.out.println("3. Display Stack");
System.out.println("4. Exit");
option=in.nextInt();
switch(option){
case 1:
System.out.println("Enter the Value to be Pushed");
item=in.nextInt();
obj.push(item);
break;
case 2:
System.out.println("Popped Item: "+obj.pop());
obj.Change_Stck(obj.tos);
break;
case 3:
System.out.println("Displaying...");
obj.display();
break;
case 4:
System.out.println("Exiting...");
i=0;
break;
default:
System.out.println("Enter a Valid Value");
}
}while(i==1);
}
}
J'espère que cela résout votre requête.