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

Tài liệu Chương 2 Các kiểu dữ liệu cơ bản doc

5 520 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Các kiểu dữ liệu cơ bản
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Tài liệu giảng dạy
Định dạng
Số trang 5
Dung lượng 59,5 KB

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

Nội dung

Viết ct nhập một mảng số nguyên tạo mảng ngẫu nhiên, thực hiện sắp xếp mảng theo các thuật tốn a.. Viết ct nhập một dãy số nguyên, lưu trữ trong tập tin nhị phân, thực hiện thao tác sắp

Trang 1

Chương 2 Các kiểu dữ liệu cơ bản

1 Viết ct thực hiện các phép toán trên ma trận vuông số thực: cộng, trừ, nhân

2 Viết ct minh họa một barner quảng cáo gồm một khung cửa sổ và dòng chữ quảng cáo chạy qua lại trong khung

3 Viết ct quản lý mặt hàng, thông tin một mặt hàng gồm: mã hàng, tên hàng, đơn vị tính, đơn giá, số lượng Chương trình có các chức năng:

a Nhập mặt hàng

b In danh mục mặt hàng

c Tính doanh thu= Tổng(Đơn giá* Số lượng) các mặt hàng

d Tính thuế GTGT:

i Nếu đơn vị tính là “Chai” : thuế = 10%

ii Nếu đơn vị tính là “Kg”: thuế = 5%

iii Còn lại không có thuế

4 Viết ct đọc nội dung một file văn bản, hiển thị lên màn hình và cho biết trong file có bao nhiêu

từ, đếm số lần xuất hiện của 1 từ do người dùng nhập vào.

5 Viết ct quản lý lương nhân viên sử dụng tập tin nhị phân

a Dữ liệu lưu trữ gồm: mã nv, họ tên, ngày sinh, lương cơ bản, hệ số lương, số ngày công, số ngày nghỉ

b Tính lương theo công thức

Lương = Lương cb * hệ số lương * (ngày công – ngày nghỉ) /24

c Chương trình có các chức năng

i Nhập hồ sơ

ii In danh sách nhân viên iii In bảng lương

iv Tìm kiếm nhân viên

6 Viết ct mô phỏng Karaoke với dữ liệu lưu trữ trong tập tin nhị phân

7 Hãy nêu giải thuật mà độ phức tạp tính toán của nó là O(1)

8 Giải thích tại sao T(n) = O(n) thì cũng sẽ đúng khi ta viết T(n) = O(n2)

9 Với các đoạn chương trình dưới đây hãy xác định độ phức tạp tính toán của giải thuật bằng ký pháp O lớn, trong trường hợp xấu nhất

a)

Sum := 0

For i := 1 to n do

Begin

Readln(x);

Sum := Sum + x;

End

b)

For i := 1 to n do

For j := 1 to n do

Begin

C[i, j] := 0;

For k := 1 to n do

C[i, j] := C[i, j] + A[i, k] * B[k, j]

End;

Trang 2

For i := 1 to n-1 do

Begin

For j := i to n-1 do

If X[j] > X[j+1] then

Begin

Temp := X[j];

X[j] := X[j+1];

X[j+1] := Temp End

End

Chương 3 Các thuật tốn sắp xếp và tìm kiếm

1 Viết ct nhập một mảng số nguyên ( tạo mảng ngẫu nhiên), thực hiện sắp xếp mảng theo các thuật tốn

a Chọn trực tiếp

b Chèn trực tiếp

c Đổi chỗ trực tiếp

d Nổi bọt

e Shaker sort

f Shell sort

g Heap sort

h Quick sort

i Merge sort

j Radix sort

2 Viết ct nhập một dãy số nguyên, lưu trữ trong tập tin nhị phân, thực hiện thao tác sắp xếp dữ liệu bằng các thuật tốn

a Trộn tự nhiên

b Trộn trực tiếp

3 Dùng các phép tốn xâu kí tự cơ bản, viết một thuật tốn đệ qui để xác định một xâu kí tự là palindrome hay khơng

Xâu kí tự được gọi là palindrome nếu nĩ khơng thay đổi khi ta đảo ngược thứ tự của các kí tự trong xâu kí tự

Ví dụ : MADAM, 45811854 …

4 Viết ct minh họa bài tốn đặt tám quân hậu

5 Viết ct minh họa bài tốn Tháp Hà nội

6 Viết ct minh họa bài tốn quân mã đi tuần

7 Viết ct liệt kê dãy nhị phân độ dài n bít

8 Viết ct liệt kê các hốn vị của các số nguyên từ 1 đến n

Chương 4 Cấu trúc dữ liệu động

1 Viết ct minh họa các thao tác trên danh sách liên kết đơn chứa các số nguyên

2 Viết ct minh họa các thao tác trên danh sách liên kết kép chứa các số nguyên

3 Cho một ngăn xếp s và 1 đoạn chương trình như sau:

struct STACK s;

int x, y = 5;

Trang 3

Push(s, 8);

Push(s, y);

Push(s, 9);

Pop(s, x);

Push(s, 18);

Pop(s, x);

Push(s, 22);

while (IsEmpty(s) == 0)

{

Pop(s, x);

printf(“%d “, y);

}

Hãy cho biết kết quả in ra màn hình khi thi hành đoạn chương trình trên là gì ?

4 Cho một hàng đợi q và 1 đoạn chương trình như sau:

struct QUEUE q;

int x = 5, y = 3;

EnQueue(q, 8);

EnQueue(q, 9);

EnQueue(q, y);

DeQueue(q, x);

EnQueue(q, 18);

DeQueue(q, x);

EnQueue(q, 22);

while (IsEmpty(q) == 0)

{

DeQueue(q, y);

printf(“%d “, y);

}

Hãy cho biết kết quả in ra màn hình khi thi hành đoạn chương trình trên là gì ?

5 Viết ct minh họa các thao tác trên ngăn xếp

6 Viết ct minh họa các thao tác trên hàng đợi

7 Viết ct chuyển đổi giữa các hệ thồng số dùng ngăn xếp

8 Viết ct tính giá trị của biểu thức tiền tơ, hậu tố dùng ngăn xếp

9 Viết một chương trình đọc một xâu ký tự, đẩy mỗi kí tự vào ngăn xếp theo thứ tự như khi chúng được đọc và đồng thời thêm nĩ vào một hàng đợi Khi đến kết thúc xâu kí tự, dùng các phép tốn cơ bản của ngăn xếp và hàng đợi để xác định xâu ký tự đĩ cĩ phải là một Palindrome khơng.

10 Cho 2 xâu liên kết T1 và T2 Giả thiết mỗi phần tử của chúng chỉ cĩ 2 thơng tin :

- Khĩa của nút (là số nguyên)

- Con trỏ đến phần tử kế

Viết chương trình tạo một xâu liên kết T nối từ 2 xâu T1 và T2 sao cho :

- Các phần tử trong T cĩ giá trị tăng

- Khơng cĩ trường hợp trùng nhau

- Xác định chi phí thuật tốn

11 Cho một xâu đơn T, mỗi nút của nĩ chứa các thơng tin sau :

- Key : kiểu Integer

- Next : con trỏ chỉ đến phần tử kế

Viết chương trình C/Pascal tách xâu T thành 2 xâu T1 và T2, trong đĩ T1 chứa các phần tử cĩ khĩa > 0

và T2 chứa các phần tử cĩ khĩa < 0 Đánh giá chi phí thuật tốn

12 Cho 2 xâu đơn T1, T2 viết ct thực hiện các thao tác

- Sắp xếp tăng dần, giảm dần

- So sánh 2 xâu

- Đếm nút dùng đệ quy

Trang 4

- Tính tổng giá trị các nút, tổng chẵn, tổng lẻ

- Kiểm tra xâu T1 có xuất hiện trong xâu T2 không và ngược lại

13 Hãy cài đặt thuật toán Quicksort không dùng đệ qui

14 Cho dãy số f(n) = 1 nếu n = 0 hay n = 1

f(n-1) + f(n-2) nếu n > 1

- Hãy viết một thủ tục/hàm đệ qui tính giá trị của f(n), với n được nhập từ bàn phím

- Hãy viết một thủ tục/hàm không đệ qui tính giá trị của f(n), với n được nhập vào từ bàn phím

Sử dụng Stack để khử đệ qui

15 Cho 2 xâu đơn T1, T2 ciết ct thực hiện các thao tác

- Tìm phần giao của 2 xâu

- Tìm phần hội của 2 xâu

- Tìm phần hiệu của 2 xâu

Chương 5 Bảng băm

1 Viết ct mô phỏng các thao tác trên bảng băm sử dụng phương pháp dò tuyến tính

2 Viết ct mô phỏng các thao tác trên bảng băm sử dụng phương pháp nối kết

3 Viết ct mô phỏng các thao tác trên bảng băm sử dụng phương pháp dò bậc hai

4 Viết ct tổ chức lưu trữ từ điển dưới dạng bảng băm

5 Hãy chọn cấu trúc dữ liệu thích hợp để biểu diễn trong bộ nhớ chính một từ điển tần số gồm tối đa 1000

từ, mỗi từ có độ dài 10 ký tự, đi kèm với mỗi từ là số lần xuất hiện của từ đó (đã được thu thập từ một

số văn bản nào đó)

Yêu cầu :

a Thời gian truy cập đến một từ là tối thiểu

b Bộ nhớ được dùng là tối thiểu

c Giả sử cấu trúc dữ liệu biểu diễn từ điển tần số (câu a.) đã được định nghĩa và chứa đầy đủ dữ liệu Viết chương trình C/Pascal liệt kê ra 100 từ có tần số lớn nhất

Chương 6 Cấu trúc cây

1 Hãy cài đặt thuật toán duyệt cây nhị phân (NLR) không dùng đệ qui (dùng stack)

2 Hãy cài đặt thuật toán duyệt cây nhị phân theo mức không dùng đệ qui (dùng queue)

3 Cho một cây nhị phân tìm kiếm với gốc là Root, giá trị lưu trữ tại mỗi nút là một số nguyên (int) Hãy viết đoạn chương trình tìm phần tử nhỏ nhất trong cây

4 Cho một cây nhị phân có cấu trúc nút là NODE, hãy:

a Viết thủ tục/hàm để tính tổng số nút có 1 nhánh con (con trái HAY con phải) bằng cách dùng thuật toán duyệt gốc giữa NLR

b Thiết lập 1 công thức đệ qui để thực hiện yêu cầu ở câu [a] Cài đặt công thức này thành thủ tục/hàm

5 Cho một cây nhị phân tìm kiếm t có cấu trúc nút là BST_NODE được khai báo như sau:

struct BST_NODE {

int Key; // Khoá của nút

int So_lan; // Số lần xuất hiện của khoá trong cây

struct BST_NODE *Left, *Right;

}

struct BST_TREE {

struct BST_NODE *pRoot; // Nút gốc của cây

}

struct BST_TREE t; // Cây t

a Hãy viết thủ tục/hàm thực hiện thao tác xoá phần tử có khoá X Cách xoá như sau:

Trang 5

· Nếu phần tử X có tồn tại, giảm field So_lan của nó 1 đơn vị.

· Nếu phần tử X không tồn tại, thông báo

b Hãy viết 1 thủ tục/hàm in lên màn hình giá trị của các phần tử đang tồn tại trong cây

theo thứ tự NLR

Ghi chú: một phần tử được gọi là có tồn tại trong cây nếu So_lan > 0.

6 Cho một cây nhị phân có gốc là Root, mỗi nút chứa một số nguyên

a Hãy viết chương trình tính trung bình cộng của các nút trong cây

b Hãy viết chương trình tính trung bình cộng của các số dương trong cây

c Hãy viết chương trình tính trung bình cộng của các số âm trong cây

d Hãy viết chương trình tính tỉ số:

R = a / b

Với a = tổng số các nút có giá trị > 0

b = tổng số các nút có giá trị < 0

7 Hãy viết một thủ tục/hàm tạo một danh sách liên kết đơn từ cây trên sao cho giá trị các phần tử trong danh sách có thứ tự giảm dần Biết gốc của cây là ROOT

Ngày đăng: 18/02/2014, 17:20

TỪ KHÓA LIÊN QUAN

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

w