Cài đặt Stack bằng mảng

Một phần của tài liệu Đề cương bài giảng môn cấu trúc dữ liệu (Trang 60 - 61)

Sau đây là bảng giá trị của một số hàm đó:

12.2.1.Cài đặt Stack bằng mảng

Ta có thể tạo một stack bằng cách khai báo một mảng 1 chiều với kích thước tối đa là N (ví dụ, N có thể bằng 1000)

Như vậy stack có thể chứa tối đa N phần tử đánh số từ 0 đến N -1. Phần tử nằm ở đầu stack sẽ có chỉ số t (lúc đó trong stack đang chứa t+1 phần tử)

Ðể khai báo một stack, ta cần một mảng 1 chiều S, biến nguyên t cho biết chỉ số của đầu stack và hằng số N cho biết kích thước tối đa của stack.

Hoặc

= Tạo stack S và quản lý đỉnh stack bằng biến t:

Data[] S ; int t;

Bổ sung một phần tử vào stack

****************************************************************** Void PUSH ( S, T, X )

1- {Xét xem stack có Tràn (Overflow) không? Hiện tượng Tràn xảy ra khi S không còn chỗ để tiếp tục lưu trữ các phần tử của stack nữa. Lúc đó sẽ in ra thông báo tràn và kết thúc} if ( T n) { Console.WriteLine(“Stack tràn”); Console.ReadKey(); }

2- {chuyển con trỏ} T++;

3 - {Bổ sung phần tử mới X vào stack} S[T] = X;

4- Return;

Giải thuật loại bỏ một phần tử ra khỏi Stack :

Giải thuật này tiến hành việc loại bỏ một phần tử ở đỉnh Stack đang trỏ bởi con trỏ T ra khỏi Stack. Phần tử bị loại bỏ sẽ được thu nhận và đưa ra. Giải thuật được viết theo dạng chơng trình con hàm như sau:

Data POP ( S, T )

1 - {Xét xem Stack có Cạn (UnderFlow) không?( Cạn nghĩa là số phần tử trong Stack = 0) . Hiện tượng cạn xảy ra khi Stack đã rỗng, không còn phần tử nào để loại nữa. Lúc đó sẽ in ra thông báo Cạn và kết thúc}

if (T < 0) {

Console.WriteLine( “ Stack Cạn”); throw new Exception(“Stack Cạn”); }

2 - {Chuyển con trỏ} T-- ;

3 - {Đưa phần tử bị loại ra} Data KQ = S [T + 1]; 4 – return KQ.

Việc cài đặt stack thông qua mảng một chiều đơn giản và khá hiệu quả.

Tuy nhiên, hạn chế lớn nhất của phương án cài đặt này là giới hạn về kích thước của stack N. Giá trị của N có thể quá nhỏ so với nhu cầu thực tế hoặc quá lớn sẽ làm lãng phí bộ nhớ.

Một phần của tài liệu Đề cương bài giảng môn cấu trúc dữ liệu (Trang 60 - 61)