You are on page 1of 3

gv : Huỳnh Bình

Buổi 05 ỨNG DỤNG STACK, QUEUE VÀO GIẢI THUẬT


Sử dụng lớp Stack, Queue của C#

1. Stack, Queue trong C#.NET


Thư viện :
using System.Collections;
using System.Collections.Generic;
Stack Queue
Khai báo, khởi tạo Stack<T> st = new Stack<T>(); Queue<T> q = new Queue<T>();
Số phần tử Count Count
Bỏ vào một phần tử Push Enqueue
Lấy ra một phần tử Pop Dequeue
Lấy giá trị phần tử đâu Peek Peek
Kiểm tra tồn tại phần tử contains Contains
Xóa hết các phần tử Clear Clear

2. Bài tập : Sử dụng stack, queue.


Yêu cầu giao diện menu từ bài 1  bài 4

Bài 1 : Công thức truy hồi của dãy fibonacci có dạng : f(n) = f(n-1) + f(n-2) , với f(1) = 1,  f(2) =1.
Và code viết hàm đệ qui như sau :
voi
Hãy sử dụng stack trong c# để khử đệ qui bài toán Fibonaci
Hướng dẫn : sử dụng stack với thuật toán sau :
float Fibonacci(int n) {
Gọi s là một Stack<float>;
Sử dụng 3 biến : float f1, f2, f3;;
Nếu (n = 0) return 0;
Nếu (n = 1) return 1;
Lần lượt đưa vào stack s : 0  s;1  s;
for (i = 2  <= n)
f2  s; f1  s; f3 = f2 + f1;
f2  s; f3  s;
f3  s;
return f3;
}

Bài 2 : Sử dụng stack để đổi số thập phân n sang chuỗi số theo cơ số e 13 2 vd: e = 2
static string convertNumber(int n, int e) 1 6 2
0 3 2
1 1 2
1 0
gv : Huỳnh Bình
hướng dẫn :
Mỗi bước lặp đưa số dư  stack (có chuyển đổi kiểu phù hợp)
Lấy các phần tử trong stack  chuỗi trả về
Lưu ý với e = 16 : số dư =10, 11, …, 15  A, B, …

Bài 3 : Kiểm tra chuỗi Palindrome: Một chuỗi được gọi là có tính chất Palindrome nếu nó có tính chât
đối xứng. ví dụ như "aaAaa". Để kiểm tra tính chất này của một chuỗi bất kì, ta đọc chuỗi bởi 2
cấu trúc riêng biệt là stack và queue. Sau đó, lấy ra từng phần tử trong stack và queue để so sánh
với nhau. Nếu tất cả các phần tử trong stack đều giống với phần tử trong queue ở vị trí tương ứng
thì chuỗi đó có tính chất Palindrome.
Hãy sử dụng stack, queue để viết hàm kiểm tra có tính chất Palindrome.

Bài 4 : Sử dụng stack để viết hàm trả về chuỗi đảo các từ của một câu. Ví dụ :
Input : chuỗi s = “Khoa CNTT , DH Huflit”
Output : “Huflit DH , CNTT Khoa”

Bài 5 : Tại phòng khám bệnh, người ta có một công việc như sau: Khi một người đến khám bệnh, người
ta tiến hành phát số thứ tự, sau đó theo thứ tự ai đến trước sẽ gọi khám trước. Trong Solution Buoi05,
hãy tạo project Khambenh để quản lý chức năng khám bệnh với yêu cầu :
1/ Chương trình có các chức năng : Phát phiếu khám, Gọi phiếu khám. Với menu như sau :

1) Phát phiếu khám : Nhập tên bệnh nhân và số TT được đánh số tự động
gv : Huỳnh Bình

2) Gọi phiếu khám : hiển thị số TT và tên bệnh nhân đến lượt vào khám, đồng thời hiển thị bệnh
nhân tiếp theo. Nếu hết phiếu thì có thông báo.

2/ Thiết kế :

Phieu() : khởi tạo biến


Phieu(so, ten) : Khởi tạo phiếu mới Phieu Ghiphieu
Ghiphieu() : Khởi tạo và reset sott_cur về 0 sott Queue
Phatso(ten) : tạo phiếu mới, bỏ vào queue (EnQueue) tenBN
Phieu Docso() : hiển thị người được gọi và người tiếp Stt_cur
Phieu() Ghiphieu()
theo (lấy trong queue ra một phiếu (DeQueue)  màn hình)
Phieu(so, ten) Phatso(ten)
Nếu không còn ai, thông báo : “Hết phiếu”
Phieu DocsoNext() : hiển thị người tiếp theo (lấy giá trị đầu Phieu Docso()
trong queue (Peek)  màn hình) Phieu
DocsoNext()

You might also like