Bài giảng Cấu trúc ngăn xếp (Stack)
Số trang: 10
Loại file: pdf
Dung lượng: 43.14 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Ngăn xếp là một dạng danh sách đặc biệt mà việc thêm vào hay xóa phần tử chỉ thực hiện tạimột đầu, gọi là đỉnh của ngăn xếp. Nhằm giúp các bạn hiểu hơn về vấn đề này, mời các bạn cùng tham khảo nội dung bài giảng "Cấu trúc ngăn xếp - Stack" dưới đây. Hy vọng nội dung bài giảng là tài liệu tham khảo hữu ích cho các bạn.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc ngăn xếp (Stack)CẤU TRÚC NGĂN XẾP (STACK) Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin & Truyền thông Đại học Cần ThơKHÁI NIỆM NGĂN XẾP Là một dạng danh sách ñặc biệt mà việc thêm vào hay xóa phần tử chỉ thực hiện tại một ñầu, gọi là ñỉnh của ngăn xếp. Làm việc theo nguyên tắc FILO(First In Last Out) hay LIFO (Last In First Out)PHÉP TOÁN TRÊN NGĂN XẾP MAKENULL_STACK(S): khởi tạo ngăn xếp rỗng. EMPTY_STACK(S): kiểm tra ngăn xếp rỗng. TOP(S): phần tử ñầu tiên trên ñỉnh ngăn xếp. POP(S): xóa phần tử ở ñỉnh ngăn xếp. PUSH(X,S): thêm phần tử X vào ñỉnh ngăn xếp S. FULL_STACK(S): kiểm tra ngăn xếp ñầy.CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Mô hình lưu trữ: Khai báo: 0 #define … MaxLength 1 typedef … ElementType; . typedef struct { . ElementType Elements[MaxLength]; top_index . int top_index; } Stack; Stack S; maxlength - 1 elementsCÀI ĐẶT NGĂN XẾP BẰNG MẢNG Khởi tạo ngăn xếp rỗng: elements 0 void MakeNull_Stack(Stack *S){ 1 S->top_index = MaxLength; . } . . maxlength - 1 top_indexCÀI ĐẶT NGĂN XẾP BẰNG MẢNG Kiểm tra ngăn xếp rỗng ? int Empty_Stack(stack S){ return S.top_index == MaxLength; } Kiểm tra ngăn xếp ñầy ? int Full_Stack(Stack S){ return S.top_index == 0; }CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Trả về phần tử ở ñỉnh ngăn xếp Nếu ngăn xếp rỗng thì thông báo lỗi Ngược lại, trả về nội dung phần tử mảng có chỉ số top_index. ElementType Top(stack S){ if (Empty_Stack(S)) printf(Loi! Ngan xep rong); else return S.Elements[S.top_index]; }CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Xóa phần tử ở ñỉnh ngăn xếp Nếu ngăn xếp rỗng thì báo lỗi Ngược lại: tăng top_index lên 1 ñơn vịvoid Pop(Stack *S){ if (Empty_Stack(*S)) printf(Loi! Ngan xep rong!); else S->top_index = S->top_index+1;}CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Thêm phần tử vào ñỉnh ngăn xếp Nếu ngăn xếp ñầy thì báo lỗi Ngược lại: giảm top_index 1 ñơn vị, ñặt X vào phần tử mảng có chỉ số top_index.void Push(ElementType X, Stack *S){ if (Full_Stack(*S)) printf(Loi! Ngan xep day!); else{ S->top_index = S->top_index-1; S->Elements[S->top_idx] = X;}CÀI ĐẶT NGĂN XẾP BẰNG DSÁCH Khai báo: typedef List Stack; Tạo ngăn xếp rỗng: MakeNull_List Kiểm tra ngăn xếp rỗng: Empty_List Thêm phần tử: Insert_List tại First Xóa phần tử: Delete_List tại First
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc ngăn xếp (Stack)CẤU TRÚC NGĂN XẾP (STACK) Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin & Truyền thông Đại học Cần ThơKHÁI NIỆM NGĂN XẾP Là một dạng danh sách ñặc biệt mà việc thêm vào hay xóa phần tử chỉ thực hiện tại một ñầu, gọi là ñỉnh của ngăn xếp. Làm việc theo nguyên tắc FILO(First In Last Out) hay LIFO (Last In First Out)PHÉP TOÁN TRÊN NGĂN XẾP MAKENULL_STACK(S): khởi tạo ngăn xếp rỗng. EMPTY_STACK(S): kiểm tra ngăn xếp rỗng. TOP(S): phần tử ñầu tiên trên ñỉnh ngăn xếp. POP(S): xóa phần tử ở ñỉnh ngăn xếp. PUSH(X,S): thêm phần tử X vào ñỉnh ngăn xếp S. FULL_STACK(S): kiểm tra ngăn xếp ñầy.CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Mô hình lưu trữ: Khai báo: 0 #define … MaxLength 1 typedef … ElementType; . typedef struct { . ElementType Elements[MaxLength]; top_index . int top_index; } Stack; Stack S; maxlength - 1 elementsCÀI ĐẶT NGĂN XẾP BẰNG MẢNG Khởi tạo ngăn xếp rỗng: elements 0 void MakeNull_Stack(Stack *S){ 1 S->top_index = MaxLength; . } . . maxlength - 1 top_indexCÀI ĐẶT NGĂN XẾP BẰNG MẢNG Kiểm tra ngăn xếp rỗng ? int Empty_Stack(stack S){ return S.top_index == MaxLength; } Kiểm tra ngăn xếp ñầy ? int Full_Stack(Stack S){ return S.top_index == 0; }CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Trả về phần tử ở ñỉnh ngăn xếp Nếu ngăn xếp rỗng thì thông báo lỗi Ngược lại, trả về nội dung phần tử mảng có chỉ số top_index. ElementType Top(stack S){ if (Empty_Stack(S)) printf(Loi! Ngan xep rong); else return S.Elements[S.top_index]; }CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Xóa phần tử ở ñỉnh ngăn xếp Nếu ngăn xếp rỗng thì báo lỗi Ngược lại: tăng top_index lên 1 ñơn vịvoid Pop(Stack *S){ if (Empty_Stack(*S)) printf(Loi! Ngan xep rong!); else S->top_index = S->top_index+1;}CÀI ĐẶT NGĂN XẾP BẰNG MẢNG Thêm phần tử vào ñỉnh ngăn xếp Nếu ngăn xếp ñầy thì báo lỗi Ngược lại: giảm top_index 1 ñơn vị, ñặt X vào phần tử mảng có chỉ số top_index.void Push(ElementType X, Stack *S){ if (Full_Stack(*S)) printf(Loi! Ngan xep day!); else{ S->top_index = S->top_index-1; S->Elements[S->top_idx] = X;}CÀI ĐẶT NGĂN XẾP BẰNG DSÁCH Khai báo: typedef List Stack; Tạo ngăn xếp rỗng: MakeNull_List Kiểm tra ngăn xếp rỗng: Empty_List Thêm phần tử: Insert_List tại First Xóa phần tử: Delete_List tại First
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc ngăn xếp Cấu trúc ngăn xếp Phép toán trên ngăn xếp Cài đặt ngăn xếp bằng mảng Cài đặt ngăn xếp Cách cài đặt ngăn xếpGợi ý tài liệu liên quan:
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Ngô Công Thắng
8 trang 66 0 0 -
Bài giảng Lập trình C cơ bản: Tuần 4
32 trang 16 0 0 -
19 trang 16 0 0
-
Cấu trúc dữ liệu và giải thuật stack
15 trang 15 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi - Nguyễn Mạnh Hiển
33 trang 12 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi - TS. Trần Ngọc Việt
17 trang 12 0 0 -
Bài giảng Cấu trúc dữ liệu 1: Chương 3D - Huỳnh Cao Thế Cường
57 trang 9 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 2: Mảng & danh sách
16 trang 8 0 0 -
11 trang 1 0 0