Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
09/01/2013 21:01 # 1
vnttqb
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 5/130 (4%)
Kĩ năng: 39/80 (49%)
Ngày gia nhập: 21/03/2011
Bài gởi: 785
Được cảm ơn: 319
[Bài giảng] Stack - Thiết lập và ứng dụng trong C


 

Chào các bạn!

Hẳn các bạn đã từng nghe tới thuật ngữ Stack trong tin học. Nó được hiểu là Ngăn Xếp. Ngăn xếp là một kiểu danh sách tuyến đặc biệt mà phép bổ sung hoặc loại bỏ phần tử luôn thực hiện tại một đầu, gọi là đỉnh (top). Ta có thể hình dung Stack như việc xếp chồng đĩa: ta chồng thêm 1 đĩa ở trên cùng, và lấy ra 1 đĩa cũng ở trên cùng. Stack thuộc và loại danh sách hoạt động dựa trên nguyên tắc LIFO (Last - In - First - Out).

Các thao tác trên Stack: (dựa trên Stack để lưu trữ số nguyên)

1. Khai báo Stack:

#define TRUE    1
#define FALSE   0
#define MAX     100
typedef struct {
        int top;
        int nodes[MAX];
} stack;

2. Thao tác Empty (kiểm tra tính rỗng của Stack):

int Empty(stack *ps) {
        if (ps -> top == -1)
            return (TRUE);
        return (FALSE);
}

3. Thêm nút mới vào đỉnh Stack (Push):

void Push (stack *ps, int x) {
        if ( ps -> top == -1) {
            printf(“\n stack full”);
            return;
        }
        ps -> top = ps ->top + 1;
        ps -> nodes[ps->top] = x;
}

4. Thao tác kiểm tra tính đầy của Stack (Full):

int Full(stack *s{
   if (-> top == (MAX-1)) return 1;
   else return 0;
}

5. Thao tác lấy một phần tử từ đỉnh Stack (Pop):

int Pop (stack *s{
      if (Empty(s){
            printf("\n Stack rong");
            return NULL;
      }
      return (-> info[s->top--]);
}

Ứng dụng của Stack: Có rất nhiều ứng dụng của Stack, sau đây tớ chỉ giới thiệu một số ứng dụng nhỏ.

1. Đảo ngược xâu: Ta sẽ nhập xâu vào Stack, sau đó lấy lần lượt các phần tử của Stack ra tại đỉnh của nó. Và do đó ta có xâu đã đảo ngược.
2. Đổi một số n từ hệ cơ số thập phân sang hệ nhị phân: Ta sẽ lấy số dư n%2 lưu vào Stack, và gán n=n/2. Đến khi nào n=1 thì cũng lưu vào Stack. Ta lại lấy lần lượt các phần tử của Stack => xâu biểu diễn nhị phân của n.
3. Thao tác trên Stack tổng quát cùng với các thao tác duyệt Stack, tìm kiếm trên stack có rất nhiều ứng dụng.


======================================================================================================

Cuộc đời là một dòng sông. Ai không bơi thì chết. 
 

Name: Tien (Tory) TRAN
Email: TranTien29@gmail.com


 
Các thành viên đã Thank vnttqb vì Bài viết có ích:
09/01/2013 22:01 # 2
Shuryn
Cấp độ: 6 - Kỹ năng: 11

Kinh nghiệm: 2/60 (3%)
Kĩ năng: 104/110 (95%)
Ngày gia nhập: 30/10/2010
Bài gởi: 152
Được cảm ơn: 654
Phản hồi: [Bài giảng] Stack - Thiết lập và ứng dụng trong C


Hay lắm bạn. tks bạn nhé
Làm thêm 1 bài queue nữa đi bạn. chuẩn bị học môn CTDL & Giải thuật rồi



KHI NÓI RA, là bạn có thể giải tỏa được.Hãy trung thực.Hãy rõ ràng. Nhưng,hãy có lý.

 
09/01/2013 22:01 # 3
vnttqb
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 5/130 (4%)
Kĩ năng: 39/80 (49%)
Ngày gia nhập: 21/03/2011
Bài gởi: 785
Được cảm ơn: 319
Phản hồi: [Bài giảng] Stack - Thiết lập và ứng dụng trong C


Trích:

Hay lắm bạn. tks bạn nhé
Làm thêm 1 bài queue nữa đi bạn. chuẩn bị học môn CTDL & Giải thuật rồi

Bạn vào đây tham khảo nhé! Chúc bạn học tốt. 
 


======================================================================================================

Cuộc đời là một dòng sông. Ai không bơi thì chết. 
 

Name: Tien (Tory) TRAN
Email: TranTien29@gmail.com


 
Các thành viên đã Thank vnttqb vì Bài viết có ích:
09/01/2013 22:01 # 4
tansvdt
Cấp độ: 3 - Kỹ năng: 1

Kinh nghiệm: 6/30 (20%)
Kĩ năng: 5/10 (50%)
Ngày gia nhập: 31/08/2010
Bài gởi: 36
Được cảm ơn: 5
Phản hồi: [Bài giảng] Stack - Thiết lập và ứng dụng trong C


Không THANK hơi phí, hehe 




 
09/01/2013 22:01 # 5
vnttqb
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 5/130 (4%)
Kĩ năng: 39/80 (49%)
Ngày gia nhập: 21/03/2011
Bài gởi: 785
Được cảm ơn: 319
Phản hồi: [Bài giảng] Stack - Thiết lập và ứng dụng trong C


Cảm ơn bạn nha! Mình sẽ cố gắng post nhiều bài hay để diễn đàn phát triển mạnh hơn nữa 



======================================================================================================

Cuộc đời là một dòng sông. Ai không bơi thì chết. 
 

Name: Tien (Tory) TRAN
Email: TranTien29@gmail.com


 
Copyright© Đại học Duy Tân 2010 - 2024