1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 10: Ứng dụng của ngăn xếp

10 29 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 449,49 KB

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

Nội dung

Kyle Loudon Mastering Algorithms, Chapter 6 Stacks and Queues.. Bài gi ảng TS Nguyễn Nam Hồng.3[r]

Trang 1

Gi ảng viên: TS Ngo Huu Phuc

Tel: 0438 326 077 Mob: 098 5696 580 Email: ngohuuphuc76@gmail.com

Bài 10: Ứng dụng của ngăn xếp

Trang 2

10.1 Đảo mảng (3)

10.2 Đảo chuỗi (4)

10.3 Chuy ển đổi hệ số (9)

10.4 Bracket Matching (5)

10.5 Balancing Act (4)

1 Data structures and Algorithms Stacks.htm

2 Kyle Loudon Mastering Algorithms, Chapter 6 Stacks and Queues

3 Elliz Horowitz – Fundamentals of Data Structures, Chapter 3 Stacks and

Queues

4 Deshpande Kakle – C and Data Structures, Chapter 19 Stacks and

Queues

5 Bài gi ảng TS Nguyễn Nam Hồng

Trang 3

 Cho một mảng gồm một dãy các giá trị.

 Để đảo thứ tự các phần tử trong mảng, sử dụng nguyên lý Last-In-First-Out của Stack

 Ví dụ về hoạt động của đảo mảng:

17 23 25 18

18

25 23 17

134 47 55 216

216

55 47 134

Trang 4

1. Khởi tạo một Stack rỗng, có kiểu số.

2. Với n phần tử của mảng, lần lượt đưa vào Stack

thông qua hàm Push:

Push a[i] in to Stack.

3. Lần lượt lấy ra từ Stack n phần tử và đưa vào trở

lại mảng ban đầu:

Pop a item from nStack in to a[i].

4. Kết thúc giải thuật

Trang 5

Ví d ụ về đảo mảng:

void revArray( int a[], int n, int stack[])

{

makeEmpty(stack);

for ( int i=0;i<n;i++)

push(stack,a[i]);

for ( int i=0;i<n;i++)

a[i]=pop(stack);

}

Trang 6

 Đảo chuỗi thực hiện việc đảo các từ trong chuỗi, sử

dụng ý tưởng Last-In-First-Out của Stack

 Ví dụ về đảo chuỗi:

Tôi Làm Bài

T ập

T ập Bài Làm Tôi

Chăm

H ọc Thì

Gi ỏi

Gi ỏi Thì

H ọc Chăm

Trang 7

Ý t ưởng xây dựng chương trình:

1. Tạo một wStack rỗng.

2. Với mỗi từ mWord đọc được từ string, đưa từ đó

vào Stack:

Push mWord into wStack.

3. Đọc từ wStack cho đến hết, thực hiện:

Pop a word from wStack into mWord.

Concate mWord to the end of outp string.

4. Dừng giải thuật

Chú ý: cần xây dựng hàm tách word từ string

Trang 8

#include <conio.h>

#include "string.h"

#define MAXSIZE 100

#define MAX 100

void push( char * stack[], char * value, int * top);

char * pop( char * stack[], int * top);

void main() {

char * stack[MAXSIZE];

int top=-1;

char mString[MAX];

char * mWord;

printf("Nhap vao mot chuoi: ");

gets(mString);

mWord = strtok(mString," ");

push(stack,mWord,&top);

mWord = strtok(NULL," ");

if(mWord) push(stack,mWord,&top); }

char *p=pop(stack,&top);

while (top>=0) {

p=strcat(p," ");

p=strcat(p,pop(stack,&top));

} printf("Chuoi ket qua \n");

puts(p);

getch();

}

Trang 9

void push( char * stack[], char * value, int * top)

{

if (*top < MAXSIZE)

{

*top=*top+1;

stack[*top]=(char*)malloc(strlen(value));

strcpy(stack[*top],value);

}

else

{

printf("Khong the them vao STACK\n");

getch();

}

}

char * pop( char * stack[], int * top) {

char * value;

if (*top>=0) {

value=(char*)malloc(strlen(stack[*top])); strcpy(value,stack[*top]);

*top=*top-1;

}

else

{ printf("STACK rong\n");

value = NULL; }

return value;

}

void makeEmpty( int * top) {

*top=-1;

}

Trang 10

nhị phân (Binary), hệ 16 (Hexadecimal).

 Con người thường sử dụng hệ thập phân

 Đối với máy tính, thường sử dụng hệ nhị phân

 Hệ 16 là hệ trung gian giữa hệ thập phân và hệ nhị phân

 Ví dụ: 111 = (01101111)B = (6F)H

Ngày đăng: 10/03/2021, 16:20

TỪ KHÓA LIÊN QUAN

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

w