1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập lớn môn cấu trúc dữ liệu và giải thuật

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

Đ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

Tiêu đề Xây dựng lớp Stack và lớp tính giá trị biểu thức
Tác giả Đỗ Duy Huấn
Trường học Trường Đại học Giao thông Vận tải
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài tập lớn
Định dạng
Số trang 12
Dung lượng 845,42 KB

Nội dung

Phấn tích bài toán... Môỗi Khách hàng cấền qu n lý các thông tin sau: Mã KHảlà 1 sôấ nguyên, H tên, SĐT.. Có các phọ ương th c: ứa.. Săấp xêấp danh sách khách hàng theo Mã KHe.. Săấp xêấ

Trang 1

TRƯỜNG Đ I H C GIAO THÔNG VÂN T I KHOA CÔNG NGH THÔNG TINẠ ỌẢỆ

Trang 2

1.Bài 1 (Bài 1 trong danh sách bài t p).ậ1.1 Đêề Bài.

1.Xấy d ng l p Stack ự ớ 2 Xấy d ng l p tính giá tr bi u th c ự ớ ị ể ứ 3 Viêất chương trình cho phép th c hi n các ch c năng sau:ự ệ ứ

Nh p vào m t bi u th c d ng trung tôấ ▪ ậ ộ ể ứ ạ

Chuy n bi u th c đó sang d ng h u tôấ ▪ ể ể ứ ạ ậ

Tính giá tr c a bi u th c▪ ị ủ ể ứ

1.2 Phấn tích bài toán L p Stack ớ

▪ Thu c tính:ộ- ‘items’: m ng ch a các phấền t c a ngăn xêấp.ả ứ ử ủ- ‘top’: Ch sôấ c a phấền t đ nh trong ngăn xêấp.ỉ ủ ử ỉ▪ Phương th c: ứ

- ‘Stack ( )’: Hàm kh i t o, kh i t o giá tr ban đấềuở ạ ở ạ ịcho ‘top’

- ‘push (char item)’: Thêm m t phấền t vào đ nhộ ử ỉngăn xêấp

- ‘pop ( )’: Lo i b và tr vêề giá tr c a phấền t đ nhạ ỏ ả ị ủ ử ỉmà không lo i b nó.ạ ỏ

- ‘peek ( )’: Lấấy m t phấền t đấều c a ngăn xêấp màộ ử ủkhông xóa phấền t đó ử

- ‘isEmpty ( )’:Ki m tra xem ngăn xêấp có trôấng không ể

Chương trình.

Trang 3

▪ Phương th c: ứ

- ‘main ( )’: Hàm chính c a chủ ương trình, th c hi nự ệvi c nh p, chuy n đ i và tính toán.ệ ậ ể ổ

- ‘f(int a, int b, char e)’: Hàm tính toán giá tr c a haiị ủsôấ

1.3 Cài đ t các l p và hàm main băềng C++.ặớL p Stack: ớ

template<class Object>class Stack{

private:int n; //Sôấ phấền t tôấi đaửObject *S;

int t; //L u ch sôấ pt vào cuôấi cùngư ỉpublic:

Stack(int c)bool empty();

//Cách xấy d ngựbool isEmpty() { return c == 0 ? true : false;

}bool full();

//Cách xấy d ngự

Trang 4

bool isEmpty() { return c == n ? true : false;

}int size();int top();int push(Object o);int pop(Object &o);}

Hàm Main

Stack<int> S; //S d ng Stack v i ki u int.ử ụ ớ ểS.push(item) //thêm phấền t vào ngăn xêấp.ửS.pop(item) // lo i b phấền t cuôấi cùng c a ngăn xêấp.ạ ỏ ử ủS.top(item) // phấền t cuôấi cùng c a ngăn xêấp.ử ủ

1.4 Phấn tích th i gian ch y c a t ng phờạ ủ ừương th c cóứtrong các l p.ớ

Code c a bài: ủ

Trang 6

2 ng d ng l p Vector đ xấy d ng l p qu n lý các đôấi tỨ ụ ớ ể ự ớ ả ượng làcác Khách hàng Môỗi Khách hàng cấền qu n lý các thông tin sau: Mã KHảlà 1 sôấ nguyên, H tên, SĐT Có các phọ ương th c: ứ

a Nh p thêm các khách hàng, sau khi hoàn thành nh pậ ậthông tin c a m t khách hàng, chủ ộ ương trình đ a ra cấu h iư ỏcó nh p n a không (y/n)? Nêấu ngậ ữ ười dùng nh p: Y thì tiêấpật c nh p, nh p N thì kêất thúc ụ ậ ậ

b Xóa đi m t khách hàng theo sôấ đi n tho i ộ ệ ạc S a đ i thông tin h tên, SĐT c a m t khách hàng bấất kỳử ổ ọ ủ ộtrong danh sách

d Săấp xêấp danh sách khách hàng theo Mã KHe Săấp xêấp danh sách khách hàng theo h tên f Hi n thọ ể ịtoàn b danh sách khách hàng hi n có ộ ệ

g Ghi danh sách khách hàng vào file

2.2 Phấn tích bài toán.

Trang 7

Phương th c quick-sort.ứCode t ng quát:ổ

Pivot = a[right];I = left -1;For(j = left; j < right ; j++){

I++;Swap( a[i] , a[j] );}

Quick-sort( a, left, i);Quick-sort( a, I + 2, right);

L p Vector.ớThu c tính:ộ

1 ‘vector::allocator_type’: Ki u alloctor để ượ ử ục s d ng đểcấấp phát b nh cho các phấền t ộ ớ ử

2 ‘vector::value_type’: Ki u c a các phấền t trong vector.ể ủ ử3 ‘vector::size_type’: Ki u unsigned integer, thể ường là`size_t`, đượ ử ục s d ng đ bi u diêỗn kích thể ể ướ ủc c a vector

Phương th c:ứ

- `vector()`: Constructor m c đ nh, t o m t vector trôấng.ặ ị ạ ộ - `vector(size_type n)`: Constructor v i sôấ lớ ượng phấền tửvà giá tr m c đ nh.ị ặ ị

Trang 8

- `vector(size_type n, const value_type& val)`: Constructorv i sôấ lớ ượng phấền t và giá tr ban đấều.ử ị

- `vector(const vector& x)`: Constructor sao chép - `~vector()`: Destructor

- `size()`: Tr vêề sôấ phấền t trong vector.ả ử - `capacity()`: Tr vêề sôấ lả ượng phấền t tôấi đa mà vector cóửth ch a mà không cấền ph i cấấp phát thêm b nh ể ứ ả ộ ớ

- `reserve(size_type n)`: Đ m b o răềng vector có th ch aả ả ể ứít nhấất `n` phấền t mà không cấền ph i cấấp phát thêm bử ả ộnh ớ

- `operator[]`: Tr vêề tham chiêấu đêấn phấền t t i v trí `i`.ả ử ạ ị - `at(size_type i)`: Tr vêề tham chiêấu đêấn phấền t t i v tríả ử ạ ị`i` v i ki m tra biên.ớ ể

- `push_back(const value_type& val)`: Thêm phấền t vàoửcuôấi vector

- `pop_back()`: Xoá phấền t cuôấi cùng.ử - `insert(iterator position, const value_type& val)`: Chènm t phấền t vào vector t i v trí `position`.ộ ử ạ ị

- `erase(iterator position)`: Xoá phấền t t i v trí `position`.ử ạ ị - `sort(first, last)`: Săấp xêấp các phấền t trong ph m viử ạ`[first, last)`

- `begin()`: Tr vêề iterator đêấn phấền t đấều tiên.ả ử - `end()`: Tr vêề iterator đêấn phấền t sau phấền t cuôấiả ử ửcùng

- `clear()`: Xoá tấất c các phấền t ả ử

Trang 9

- `empty()`: Ki m tra xem vector có trôấng không.ể - `front()`: Tr vêề tham chiêấu đêấn phấền t đấều tiên.ả ử - `back()`: Tr vêề tham chiêấu đêấn phấền t cuôấi cùng.ả ử - `assign(first, last)`: Gán giá tr t dãy `[first, last)` vàoị ừvector.

2.3 Cài đ t các l p và hàm main băềng c++.ặớL p Vector:ớ

template <typename T>class Vector {

private:vector<T> v;public:

Vector() {} // Thêm phấền t vào vectorử void push_back(const T& element) { v.push_back(element);

} // Hi n th vectorể ị void display() const { for (const T& element : v) { cout << element << " "; }

Trang 10

cout << endl; }

// Săấp xêấp vector băềng thu t toán QuickSortậ // Hàm so sánh đ ược truyêền vào đ có th săấp xêấp theoể ểnhiêều cách khác nhau

#include <iostream>#include <vector>template <typename T>int partition(vector<T>& arr, int left, int right) { T pivot = arr[right];

int i = left - 1; for (int j = left; j < right; j++) { if (arr[j] <= pivot) { i++;

swap(arr[i], arr[j]); }

} swap(arr[i + 1], arr[right]); return i + 1;

}template <typename T>void quickSort(vector<T>& arr, int left, int right) {

Trang 11

if (left < right) { int pivotIndex = partition(arr, left, right);

quickSort(arr, left, pivotIndex - 1); quickSort(arr, pivotIndex + 1, right); }

}

Hàm Main:

int main() { vector<int> arr; int n = arr.size(); cout << "Dãy đã nh p là: ";ậ for (int num : arr) { cout << num << " "; }

cout << endl; quickSort(arr, 0, n - 1); cout << "Ngăn săấp xêấp tăng dấền: "; for (int num : arr) {

cout << num << " "; }

cout << endl

Trang 12

return 0;};

2.4 Phấn tích th i gian ch y c a t ng phờạ ủ ừương th c cóứtrong các l p.ớ

Code Bài 2:Ví d minh h a: ụọ

Ngày đăng: 16/09/2024, 15:42

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

TÀI LIỆU LIÊN QUAN

w