Trong Java, kích thước mảng luôn có độ dài cố định nhưng có cách để bạn có thể tự động tăng kích thước của mảng trong thời gian chạy chính nó
Đây là cách được "sử dụng" cũng như được ưa thích nhất-
int temp[]=new int[stck.length+1];
for(int i=0;i<stck.length;i++)temp[i]=stck[i];
stck=temp;
Trong đoạn mã trên, chúng ta đang khởi tạo một mảng temp [] mới và tiếp tục sử dụng vòng lặp for để khởi tạo nội dung của tạm thời với nội dung của mảng ban đầu tức là. stck []. Và sau đó lại sao chép nó trở lại bản gốc, cho chúng ta một mảng KÍCH THƯỚC mới.
Không nghi ngờ gì nữa, nó tạo ra Chi phí CPU do khởi động lại một mảng bằng cách sử dụng vòng lặp for lặp đi lặp lại. Nhưng bạn vẫn có thể sử dụng và triển khai nó trong mã của mình. Đối với phương pháp hay nhất, hãy sử dụng "Danh sách được liên kết" thay vì Mảng, nếu bạn muốn dữ liệu được lưu trữ động trong bộ nhớ, có độ dài thay đổi.
Đây là một ví dụ trong thời gian thực dựa trên ngăn xếp động để TĂNG KÍCH THƯỚC ĐẾN TẠI Thời gian chạy
Tên tệp: 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();
}
}
Tên tệp: Exec.java
(với lớp chính)
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);
}
}
Hy vọng điều này giải quyết được thắc mắc của bạn.