1. Trang chủ
  2. » Kinh Tế - Quản Lý

Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Th.S Thiều Quang Trung

20 10 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 0,94 MB

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

Nội dung

Thiều Quang Trung Bộ môn Khoa học cơ bản Trường Cao đẳng Kinh tế Đối ngoại... Thao tác thêm - Push vào Stack.[r]

Trang 1

CHƯƠNG 5

KIỂU NGĂN XẾP, HÀNG ĐỢI, Đ QUY

GV Th.S Thiều Quang Trung

Bộ môn Khoa học cơ bản Trường Cao đẳng Kinh tế Đối ngoại

Trang 2

• Khái niệm ngăn xếp

1

• Phương pháp xây dựng stack

2

• Các thao tác cơ bản trên stack

3

• Kiểu queue - hàng đợi

4

• Các thao tác cơ bản trên queue

5

• Đệ qui và các bài toán đệ qui

6

Nội dung

Trang 3

Ngăn xếp - Định nghĩa

• Stack là 1 cấu trúc:

– Gồm nhiều phần tử

– Hoạt động theo cơ chế “Vào sau – Ra trước”

(LIFO – Last In, First Out)

Đỉnh ngăn xếp

Trang 4

Thao tác cơ bản trên Stack

Push Pop

Trang 5

Thao tác thêm - Push vào Stack

Top

Trang 6

Thao tác lấy - Pop khỏi stack

Top

Trang 7

Ví dụ thêm và xóa phần tử trong stack

Cần nhập 4 số vào

Ban đầu Nhập 1

1

Nhập 5

1

5

Nhập 7

1

5

7

Nhập 3

1

5

7

3

Lấy ra => 3

1

5

7

3

Lấy ra => 7

1

5

7

Lấy ra => 5

1

5

Lấy ra => 1

1

Stack đã rỗng Ngừng

Trang 8

Cách xây dựng Stack

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

 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ớ

Trang 9

Stack – Sử dụng mảng

9

3

6

9 3 6

Stack

Top

Trang 10

Stack số nguyên – Sử dụng mảng

struct ttStack

{

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

};

Trang 11

Stack số nguyên – Sử dụng mảng

{

s.StkArray = new int[MaxItems];

if (s.StkArray == NULL)

return false;

s.StkMax = MaxItems;

s.StkTop = -1;

return true;

}

Trang 12

Stack số nguyên – Sử dụng mảng

{

if (s.StkTop==-1)

return true;

return false;

}

Trang 13

Stack số nguyên – Sử dụng mảng

{

return true;

return false;

}

Trang 14

Stack số nguyên – Sử dụng mảng

{

if (IsFull(s))

return false;

s.StkTop++;

s.StkArray[s.StkTop] = newitem;

return true;

Trang 15

Stack số nguyên – Sử dụng mảng

{

if (IsEmpty(s))

return false;

outitem = s.StkArray[s.StkTop];

s.StkTop ;

return true;

}

Trang 16

Bài tập

• Viết hàm nhập và xuất Stack số nguyên

• Khai báo cấu trúc và viết hàm tạo Stack từ

chuỗi ký tự str (mỗi phần tử Stack là ký tự)

• Khai báo cấu trúc và viết hàm tạo Stack từ

chuỗi ký tự str (mỗi phần tử Stack là một từ

- từ cách nhau bởi khoảng trắng)

Trang 17

Stack – Ví dụ ứng dụng

• Kiểm tra sự tương ứng của các cặp ngoặc

đơn trong một biểu thức

• Đảo ngược một chuỗi ký tự

• Kinh tế Đối ngoại  iạogn iốĐ ết hniK

Trang 18

Stack – Sử dụng DSLK

9

7

4

N

7

9

4

Trang 19

Stack – Sử dụng DSLK

• Cấu tạo đầu stack

• Cấu tạo một phần tử

N

StkCnt StkTop

Data Link

stack

StkCnt <integer>

StkTop <node pointer>

end stack

node

Data <datatype>

end node

Trang 20

Stack số nguyên – Sử dụng DSLK

typedef struct tagSTACK_NODE

{

tagSTACK_NODE *pNext;

} STACK_NODE;

typedef struct STACK

{

STACK_NODE *StkTop;

};

Ngày đăng: 11/03/2021, 13:19

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w