[Thực hành] Triển khai Stack sử dụng mảng

DSA: Stack, Queue

Mục đích

Triển khai stack sử dụng mảng

Mô tả 

Thực thi lớp MyStack sử dụng mảng và StackClient theo sơ đồ lớp sau:

Lớp MyStack bao gồm các thành phần sau:

Thuộc tính

–       size có kiểu số nguyên, lưu số phần tử trong stack

–       arr có kiểu mảng số nguyên, lưu danh sách các phần tử trong stack

–       index có kiểu số nguyên, mặc định gán giá trị 0, xác định vị trí của từng phần tử trong stack

Phương thức khởi tạo:

MyStack(int): khởi tạo số phần tử trong stack

Phương thức

  • push(): chèn phần tử mới vào stack
  • pop(): xoá phần tử khỏi stack
  • size(): trả về số phần tử hiện tại của stack
  • isEmpty(): kiểm tra xem stack có rỗng không
  • isFull(): kiểm tra xêm stack có đầy không

Lớp StackClient chứa phương thức main() để thực thi ứng dụng.

Hướng dẫn nộp bài:

  • Up mã nguồn lên github
  • Paste link github vào phần nộp bài

Hướng dẫn

Bước 1: Tạo lớp MyStack với các thuộc tính:

public class MyStack {     private int arr[];     private int size;     private int index = 0;      public MyStack(int size) {         this.size = size;         arr = new int[size];     } }

Bước 2: Cài đặt phương thức push()

public void push(int element){    
  if (isFull()) {      
    throw new StackOverflowError("Stack is full");    
  }    
  arr[index] = element;    
  index++;
}

Bước 3: Cài đặt phương thức pop()

public int pop() throws Exception {
   if (isEmpty()) { 
      throw new Exception("Stack is null");
  }
  return arr[--index];
}

Bước 4: Cài đặt phương thức size()

public int size() {
    return index;
}

Bước 5: Cài đặt phương thức isEmpty()

public boolean isEmpty() {
    if (index == 0) {
        return true;
    }
    return false;
}

Bước 6: Cài đặt phương thức isFull()

public boolean isFull() {
    if (index == size) {
        return true;
    }
    return false;
}

Bước 7: Cài đặt lớp StackClient chứa phương thức main để thực thi ứng dụng

public class StackClient {
    public static void main(String[] as) throws Exception {
        MyStack stack = new MyStack(5);
        stack.push(5);
        stack.push(4);
        stack.push(3);
        stack.push(2);
        stack.push(1);
        System.out.println("1. Size of stack after push operations: " + stack.size());
        System.out.printf("2. Pop elements from stack : ");
        while (!stack.isEmpty()) {
            System.out.printf(" %d", stack.pop());
        }
        System.out.println("\n3. Size of stack after pop operations : " + stack.size());
    }
}

Bước 8: Chạy chương trình. Quan sát kết quả trả về. Thêm mã lệnh để kiểm tra xem stack đã đầy hay chưa.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Leave a Reply

Your email address will not be published. Required fields are marked *