1. Trang chủ
  2. » Công Nghệ Thông Tin

BÀI TẬP CÔNG NGHỆ THÔNG TIN TRƯỜNG ITC pot

10 250 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 166,26 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ðể biểu diễn Stack: Dùng mảng 1 chiều hoặc danh sách liên kết.. Mảng 1 chiều Danh sách liên kết ñơn - Viết chương trình dễ dàng, nhanh chóng - Bị hạn chế do số lượng phần tử cố ñịnh - T

Trang 1

Ðể biểu diễn Stack: Dùng mảng 1 chiều hoặc danh sách liên kết.

Mảng 1 chiều Danh sách liên kết ñơn

- Viết chương trình dễ dàng,

nhanh chóng

- Bị hạn chế do số lượng phần tử

cố ñịnh

- Tốn chi phí tái cấp phát và sao

chép vùng nhớ nếu sử dụng

mảng ñộng

Phức tạp khi triển khai chương trình

Không bị cố ñịnh về số phần tử, phụ thuộc vào bộ nhớ

This is trial version www.adultpdf.com

Trang 2

// Giả sử Stack chứa các phần tử kiểu nguyên // Khai báo cấu trúc Stack

typedef struct STACK {

int* StkArray; // mảng chứa các phần tử int StkMax; // số phần tử tối ña

int StkTop; // vị trí ñỉnh Stack };

//Thao tác “Khởi tạo Stack rỗng”

int InitStack(STACK& s, int MaxItems) {

s.StkArray = new int[MaxItems];

if (s.StkArray == NULL)

return 0; // Không cấp phát ñược bộ nhớ

s.StkMax = MaxItems;

s.StkTop = -1; // chưa có phần tử nào trong Stack return 1; // khởi tạo thành công

}

Ngăn xếp sử dụng mảng

This is trial version www.adultpdf.com

Trang 3

//Thao tác “Kiểm tra Stack rỗng”

int IsEmpty(const STACK &s) {

if (s.StkTop==-1)

return 1; // Stack rỗng return 0; // Stack không rỗng

}

//Thao tác “Kiểm tra Stack ñầy”

int IsFull(const STACK &s) {

if (s.StkTop==s.StkMax-1)

return 1; // Stack ñầy return 0; // Stack chưa ñầy

}

This is trial version www.adultpdf.com

Trang 4

//Thao tác “Push”: thêm một phần tử vào ñỉnh Stack

int Push (STACK& s, int newitem) {

if (IsFull(s))

return 0; // stack ñầy, không thể thêm

s.StkTop++;

s.StkArray[s.StkTop] = newitem;

return 1; // thêm thành công

}

//Thao tác “Pop”: lấy ra 1 phần tử từ ñỉnh Stack

int Pop(STACK& s, int& outitem) {

if (IsEmpty(s))

return 0; // Stack rỗng, không lấy ra ñược

outitem = s.StkArray[s.StkTop];

s.StkTop ;

return 1; // lấy ra thành công

}

This is trial version www.adultpdf.com

Trang 5

//truy xuất 1 phần tử ở ñỉnh Stack, không làm thay ñổi Stack

int StackTop(const STACK s, int& outitem) {

if (IsEmpty(s))

return 0; // Stack rỗng, không lấy ra ñược

outitem = s.StkArray[s.StkTop];

return 1; // lấy ra thành công

}

This is trial version www.adultpdf.com

Trang 6

// Giả sử Stack chứa các phần tử kiểu nguyên

// Khai báo cấu trúc một phần tử trong stack

typedef struct tagSTACK_NODE {

int Data;

tagSTACK_NODE *pNext;

} STACK_NODE;

// Khai báo cấu trúc stack

typedef struct STACK {

int StkCount;

STACK_NODE *StkTop;

};

Ngăn xếp sử dụng DSLK

This is trial version www.adultpdf.com

Trang 7

//Thao tác “Khởi tạo stack rỗng”:

void InitStack(STACK& s) {

s.StkTop = NULL;

s.StkCount = 0;

}

//Thao tác “Kiểm tra stack rỗng”

int IsEmpty(const STACK& s) {

if (s.StkTop == NULL) return 1; // stack rỗng

return 0; // stack không rỗng

}

This is trial version www.adultpdf.com

Trang 8

//Thao tác “Kiểm tra stack ñầy”

int IsFull (const STACK s) {

// thử tạo mới một phần tử

STACK_NODE* temp = new STACK_NODE;

// nếu không tạo ñược  stack ñầy

if (temp == NULL)

return 1; // stack ñầy

delete temp;

return 0; // stack chưa ñầy

}

This is trial version www.adultpdf.com

Trang 9

//Thao tác “Push”: thêm 1 phần tử vào ñỉnh stack

int Push(STACK &s, int newitem) {

if (IsFull(s))

return 0; // Stack ñầy, không thêm vào ñược

STACK_NODE *pNew = new STACK_NODE;

pNew->Data = newitem;

pNew->pNext = s.StkTop;

s.StkTop = pNew;

s.StkCount++;

return 1; // Thêm thành công

}

This is trial version www.adultpdf.com

Trang 10

//Thao tác “Pop”: lấy ra 1 phần tử từ ñỉnh stack

int Pop(STACK &s, int& outitem) {

if (IsEmpty(s))

return 0; // Stack rỗng, không lấy ra ñược // lưu lại con trỏ ñến ptử ñầu

STACK_NODE *temp = s.StkTop;

outitem = s.StkTop->Data;

s.StkTop = s.StkTop->pNext;

delete temp;

s.StkCount ;

return 1; // Lấy ra thành công

}

This is trial version www.adultpdf.com

Ngày đăng: 13/08/2014, 23:21

TỪ KHÓA LIÊN QUAN

w