Bài giảng Cấu trúc dữ liệu 1: Chương 3D - Huỳnh Cao Thế Cường
Số trang: 57
Loại file: ppt
Dung lượng: 502.50 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Các nội dung chính được trình bày trong chương này gồm có: Ngăn xếp (stack), minh họa thao tác, cài đặt ngăn xếp bằng mảng, cài đặt ngăn xếp bằng con trỏ, hàng đợi (queue), cài đặt hàng bằng mảng theo phương pháp tịnh tiến, cài đặt hàng với mảng xoay vòng,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu 1: Chương 3D - Huỳnh Cao Thế Cường TRƯỜNGĐẠIHỌCANGIANGKHOAKỸTHUẬTCÔNGNGHỆMÔITRƯỜNG CẤUTRÚCDỮLIỆU1 Giảng viên phụ trách: HUỲNH CAO THẾ CƯỜNG Bộ môn Tin học email: hctcuong@agu.edu.vn 1 1 NGĂN XẾP (STACK)Ngăn xếp (Stack): là một danh sách mà việc thêm vào hoặc loại bỏ một phần tử chỉ thực hiện tại một đầu của danh sách, đầu này gọi là đỉnh (TOP) của ngăn xếp.Stack là một cấu trúc có tính chất “vào sau - ra trước” hay “vào trước – ra sau“ (LIFO (last in - first out ) hay FILO (first in – last out)). 2NGĂN XẾP (STACK) Đỉnh ngăn Push Pop xếp 3 Minh họa thao tác PUSH DataTop 4 Minh họa thao tác POP DataTop 5 Minh họa thao tác TOP Data ?Top ? 6 NGĂN XẾP (STACK)Các phép toán trên ngăn xếp MAKENULL_STACK(S): tạo một ngăn xếp rỗng. TOP(S) hàm trả về phần tử tại đỉnh ngăn xếp. POP(S) xoá một phần tử tại đỉnh ngăn xếp. PUSH(x,S) thêm một phần tử x vào đầu ngăn xếp. EMPTY_STACK(S) kiểm tra ngăn xếp 7Cài đặt ngăn xếp bằng mảng 8 Cài đặt ngăn xếp bằng mảngKhai báo ngăn xếp#define MaxLength ... //độ dài của mảngtypedef ... ElementType; //kiểu các phần tử trong ngăn xếptypedef struct{ ElementType Elements[MaxLength]; //Lưu nội dung của các phần tử int Top; //giữ vị trí đỉnh ngăn xếp} Stack; 9 Cài đặt ngăn xếp bằng mảngTạo ngăn xếp rỗng Ngăn xếp rỗng là ngăn xếp không chứa bất kỳ một phần tử nào, do đó đỉnh của ngăn xếp không được phép chỉ đến bất kỳ vị trí nào trong mảng. void Makenull_Stack(Stack *S) { S->Top=MaxLength; } 10 Cài đặt ngăn xếp bằng mảngKiểm tra ngăn xếp rỗng int IsEmpty_Stack(Stack S) { return S.Top==MaxLength; }Kiểm tra ngăn xếp đầy int IsFull_Stack(Stack S) { return S.Top==0; } 11 Cài đặt ngăn xếp bằng mảngLấy nội dung phần tử tại đỉnh của ngăn xếp ElementType Top(Stack S) { if (!IsEmpty_Stack(S)) return S.Elements[S.Top]; else printf(Loi! Ngan xep rong); } 12 Cài đặt ngăn xếp bằng mảngChú ý Nếu ElementType không thể là kiểu kết quả trả về của một hàm thì ta có thể viết Hàm Top như sau: void Top2(Stack S, Elementtype *X) { //Trong đó x sẽ lưu trữ nội dung phần tử //tại đỉnh của ngăn xếp if (!IsEmpty_Stack(S)) *X = S.Elements[S.Top]; else printf(“Loi: Ngan xep rong “); } 13 Cài đặt ngăn xếp bằng mảngxóa phần tử ra khỏi ngăn xếp void Pop(Stack *S) { if (!IsEmpty_Stack(*S)) S->Top=S->Top+1; else printf(Loi! Ngan xep rong!); } 14 Cài đặt ngăn xếp bằng mảngThêm phần tử vào ngăn xếpvoid Push(ElementType X, Stack *S){ if (IsFull_Stack(*S)) printf(Loi! Ngan xep day!); else { S->Top=S->Top-1; S->Elements[S->Top]=X; }} 15 Cài đặt ngăn xếp bằng con trỏKhai báo ngăn xếptypedef … ElementType;struct Node{ ElementType Element; Node *Next;};typedef struct Node *PtrToNode;typedef PtrToNode Position;typedef PtrToNode Stack; 16 Cài đặt ngăn xếp bằng con trỏTạo ngăn xếp rỗngvoid Makenull_Stack( Stack &S ){ S = new Node; S->Next = NULL;}Kiểm tra ngăn xếp rỗng int IsEmpty_Stack( Stack S ) { return S->Next == NULL; } 17 Cài đặt ngăn xếp bằng con trỏLấy nội dung phần tử tại đỉnh của ngăn xếp ElementType Top( Stack S ) { return S->Next->Element; } 18 Cài đặt ngăn xếp bằng con trỏxóa phần tử ra khỏi ngăn xếpvoid Pop(Stack S ){ Position P, TmpCell; P = Header(S); if( P->Next!=NULL ) { TmpCell = P->Next; P->Next = TmpCell->Next; free( TmpCell ); }} 19 Cài đặt ngăn xếp bằng con trỏThêm phần tử vào ngăn xếpvoid Push( ElementType X, Stack S ){ Position TmpCell, P; P = Header(S); TmpCell = new Node; if( TmpCell == NULL ) printf( Out of space!!! ); TmpCell->Element = X; TmpCell->Next = P->Next; P->Next = TmpCell;} 20
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu 1: Chương 3D - Huỳnh Cao Thế Cường TRƯỜNGĐẠIHỌCANGIANGKHOAKỸTHUẬTCÔNGNGHỆMÔITRƯỜNG CẤUTRÚCDỮLIỆU1 Giảng viên phụ trách: HUỲNH CAO THẾ CƯỜNG Bộ môn Tin học email: hctcuong@agu.edu.vn 1 1 NGĂN XẾP (STACK)Ngăn xếp (Stack): là một danh sách mà việc thêm vào hoặc loại bỏ một phần tử chỉ thực hiện tại một đầu của danh sách, đầu này gọi là đỉnh (TOP) của ngăn xếp.Stack là một cấu trúc có tính chất “vào sau - ra trước” hay “vào trước – ra sau“ (LIFO (last in - first out ) hay FILO (first in – last out)). 2NGĂN XẾP (STACK) Đỉnh ngăn Push Pop xếp 3 Minh họa thao tác PUSH DataTop 4 Minh họa thao tác POP DataTop 5 Minh họa thao tác TOP Data ?Top ? 6 NGĂN XẾP (STACK)Các phép toán trên ngăn xếp MAKENULL_STACK(S): tạo một ngăn xếp rỗng. TOP(S) hàm trả về phần tử tại đỉnh ngăn xếp. POP(S) xoá một phần tử tại đỉnh ngăn xếp. PUSH(x,S) thêm một phần tử x vào đầu ngăn xếp. EMPTY_STACK(S) kiểm tra ngăn xếp 7Cài đặt ngăn xếp bằng mảng 8 Cài đặt ngăn xếp bằng mảngKhai báo ngăn xếp#define MaxLength ... //độ dài của mảngtypedef ... ElementType; //kiểu các phần tử trong ngăn xếptypedef struct{ ElementType Elements[MaxLength]; //Lưu nội dung của các phần tử int Top; //giữ vị trí đỉnh ngăn xếp} Stack; 9 Cài đặt ngăn xếp bằng mảngTạo ngăn xếp rỗng Ngăn xếp rỗng là ngăn xếp không chứa bất kỳ một phần tử nào, do đó đỉnh của ngăn xếp không được phép chỉ đến bất kỳ vị trí nào trong mảng. void Makenull_Stack(Stack *S) { S->Top=MaxLength; } 10 Cài đặt ngăn xếp bằng mảngKiểm tra ngăn xếp rỗng int IsEmpty_Stack(Stack S) { return S.Top==MaxLength; }Kiểm tra ngăn xếp đầy int IsFull_Stack(Stack S) { return S.Top==0; } 11 Cài đặt ngăn xếp bằng mảngLấy nội dung phần tử tại đỉnh của ngăn xếp ElementType Top(Stack S) { if (!IsEmpty_Stack(S)) return S.Elements[S.Top]; else printf(Loi! Ngan xep rong); } 12 Cài đặt ngăn xếp bằng mảngChú ý Nếu ElementType không thể là kiểu kết quả trả về của một hàm thì ta có thể viết Hàm Top như sau: void Top2(Stack S, Elementtype *X) { //Trong đó x sẽ lưu trữ nội dung phần tử //tại đỉnh của ngăn xếp if (!IsEmpty_Stack(S)) *X = S.Elements[S.Top]; else printf(“Loi: Ngan xep rong “); } 13 Cài đặt ngăn xếp bằng mảngxóa phần tử ra khỏi ngăn xếp void Pop(Stack *S) { if (!IsEmpty_Stack(*S)) S->Top=S->Top+1; else printf(Loi! Ngan xep rong!); } 14 Cài đặt ngăn xếp bằng mảngThêm phần tử vào ngăn xếpvoid Push(ElementType X, Stack *S){ if (IsFull_Stack(*S)) printf(Loi! Ngan xep day!); else { S->Top=S->Top-1; S->Elements[S->Top]=X; }} 15 Cài đặt ngăn xếp bằng con trỏKhai báo ngăn xếptypedef … ElementType;struct Node{ ElementType Element; Node *Next;};typedef struct Node *PtrToNode;typedef PtrToNode Position;typedef PtrToNode Stack; 16 Cài đặt ngăn xếp bằng con trỏTạo ngăn xếp rỗngvoid Makenull_Stack( Stack &S ){ S = new Node; S->Next = NULL;}Kiểm tra ngăn xếp rỗng int IsEmpty_Stack( Stack S ) { return S->Next == NULL; } 17 Cài đặt ngăn xếp bằng con trỏLấy nội dung phần tử tại đỉnh của ngăn xếp ElementType Top( Stack S ) { return S->Next->Element; } 18 Cài đặt ngăn xếp bằng con trỏxóa phần tử ra khỏi ngăn xếpvoid Pop(Stack S ){ Position P, TmpCell; P = Header(S); if( P->Next!=NULL ) { TmpCell = P->Next; P->Next = TmpCell->Next; free( TmpCell ); }} 19 Cài đặt ngăn xếp bằng con trỏThêm phần tử vào ngăn xếpvoid Push( ElementType X, Stack S ){ Position TmpCell, P; P = Header(S); TmpCell = new Node; if( TmpCell == NULL ) printf( Out of space!!! ); TmpCell->Element = X; TmpCell->Next = P->Next; P->Next = TmpCell;} 20
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Bài giảng Cấu trúc dữ liệu Giải thuật Cơ sở dữ liệu Cấu trúc dữ liệu động Cài đặt ngăn xếp bằng mảngGợi ý tài liệu liên quan:
-
62 trang 402 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 378 6 0 -
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
13 trang 294 0 0
-
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 293 0 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 288 0 0 -
Tài liệu học tập Tin học văn phòng: Phần 2 - Vũ Thu Uyên
85 trang 256 1 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 246 0 0 -
8 trang 186 0 0
-
Giáo trình về dữ liệu và các mô hình cơ sở dữ liệu
62 trang 185 0 0