DeCuong stack C++ cấu trúc dữ liệu

5 348 0
DeCuong stack  C++ cấu trúc dữ liệu

Đang tải... (xem toàn văn)

Thông tin tài liệu

stack đề cương cấu trúc dữ liệu đề cương stack giúp bạn phần nào hiểu hơn cấu trúc dữ liệu giáo trình cấu trúc dữ liệu bằng c++, lập trình siêu hay ccccccccccccccccccccccccccccccccccccccccccwerferwgesthrtjsrtherweargawrhtejzetgwrgtrwzhethtjryfrjkyuktdyjwrEgqwFQƯETFERZUHJYRFCKJCGHJMCYGJRD6YUJTSEH

ĐỀ CƯƠNG CẤU TRÚC DỮ LIỆU I STACK, QUEUE a STACK (FILO) • Khai báo #define MaxLength 100 //độ dài mảng typedef int ElementType; //kiểu phần tử ngăn xếp typedef struct { ElementType Elements[MaxLength]; //Lưu nội dung phần tử int Top_idx; //giữ vị trí đỉnh ngăn xếp }Stack; Stack S; • Tạo STACK rỗng void MakeNull_Stack(Stack *S) { S->Top_idx=MaxLength; } • Kiểm tra rỗng – trang 34 • Kiểm tra đầy – trang 33 • Lấy đỉnh ElementType Top(Stack S) { if (S->Top == MaxLength) { printf("Loi! Ngan xep rong"); } else { return S.Elements[S.Top_idx]; } } • Thêm vào STACK – Push (phải có *S) void Push(ElementType X, Stack *S) { if (S->Top_idx ==0) // ngan xep day printf("Loi! Ngan xep day!"); else { S->Top_idx=S->Top_idx-1; S->Elements[S->Top_idx]=X; } } • Xóa khỏi STACK – POP (phải có *S) void Pop(Stack *S) { if (S->Top == MaxLength) // STACK rong { printf("Loi! Ngan xep rong!"); } else { S->Top_idx = S->Top_idx+1; } } • BÀI TẬP áp dụng Chuyển đổi số thập phân sang nhị phân void chuyencoso( int X, Stack *S) { MakeNull_Stack(S); while (X!=0) { int soDu = X%2; Push(soDu, S); X = X/2; } // xuất Stack while((S)->Top!=Max) { coutRear=-1; }  KIỂM TRA RỖNG – TRANG 37,38  KIỂM TRA ĐẦY – TRANG 37,38  Chèn – ENQUEUE (3 phần quan trọng) void EnQueue(ElementType X,Queue *Q) { if (!Full_Queue(*Q)) { if (Empty_Queue(*Q)) Q->Front=0; if (Q->Rear==MaxLength-1) { //Di chuyen tinh tien truoc Front -1 vi tri for(int i=Q->Front ; iRear ; i++) { Q->Elements[i-Q->Front]=Q->Elements[i]; } //Cập nhật lại vi tri Rear moi Q->Rear=MaxLength - Q->Front-1; Q->Front=0; } //Tang Rear de luu noi dung moi – quan trọng Q->Rear=Q->Rear+1; Q->Element[Q->Rear]=X; } } else printf("Loi: Hang day!");}  Xóa – DEQUEUE void DeQueue(Queue *Q) { if (!Empty_Queue(*Q)) { Q->Front=Q->Front+1; //quan trọng if (Q->Front>Q->Rear) { MakeNull_Queue(Q); //Dat lai hang rong } }else printf("Loi: Hang rong!"); } • Hàng đợi vòng Khác với tĩnh %MaxLength  KIỂM TRA ĐẦY int Full_Queue(Queue Q) { return (Q.Rear-Q.Front+1) % MaxLength==0; }  XÓA PHẦN TỬ void DeQueue(Queue *Q) { if (!Empty_Queue(*Q)) { //Nếu hàng chứa phần tử khởi tạo hàng lại if (Q->Front==Q->Rear) MakeNull_Queue(Q); { else Q->Front=(Q->Front+1) % MaxLength; //tăng Front lên đơn vị } }else printf("Loi: Hang rong!"); }  KIỂM TRA ĐẦY void EnQueue(ElementType X,Queue *Q){ if (!Full_Queue(*Q)) { if (Empty_Queue(*Q)) { Q->Front=0; } Q->Rear=(Q->Rear+1) % MaxLength; //QUAN TRỌNG Q->Elements[Q->Rear]=X; //QUAN TRỌNG } else printf("Loi: Hang day!"); } • BÀI TẬP ÁP DỤNG Mô tả chuyến phà - nguyên tắt vào trước trước

Ngày đăng: 27/11/2016, 20:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan