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

Bài giảng cấu trúc dữ liệu và giải thuật chương 3 ths nguyễn thị khiêm hòa

32 315 1

Đ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 32
Dung lượng 815,75 KB

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

Nội dung

Nội dung  Danh sách và các phép toán trên danh sách  Danh sách đặc  Danh sách liên kết... Mục tiêu  Hiểu rõ về CTDL danh sách  Phương pháp xây dựng lớp đối tượng danh sách đặc, danh

Trang 1

Chương 3:

Danh sách

Gi ả ng viên: Ths Nguyễn Thị Khiêm Hòa

Trang 2

Nội dung

 Danh sách và các phép toán trên danh sách

 Danh sách đặc

 Danh sách liên kết

Trang 3

Mục tiêu

 Hiểu rõ về CTDL danh sách

 Phương pháp xây dựng lớp đối tượng danh sách đặc,

danh sách liên kết và các kiểu dữ liệu đặc biệt trên C#

 Đánh giá ưu khuyết điểm của giải thuật trên từng loại

danh sách để chọn kiểu dữ liệu phù hợp

Trang 4

Danh sách

 Định nghĩa

Danh sách là dãy hữu hạn có thứ tự của các phần tử

thuộc một lớp đối tượng

 Ký hiệu: L(a1, a2, …, an)

 Danh sách tuyến tính là danh sách mà quan hệ lân cận

giữa các phần tử được hiển thị

Trang 6

Mảng

 Tập hợp các phần tử cùng kiểu dữ liệu, nằm liên tiếp

trong bộ nhớ

 Có chỉ số bắt đầu từ 0

 Giá trị mặc định của từng phần tử trong mảng quy định

theo từng kiểu đối tượng

 Mảng là đối tượng

 Kích thước: có thể là 1 hoặc nhiều chiều

Trang 8

Bài tập

 Xây dựng lớp mảng số nguyên, thực hiện

việc tính tổng, tổng chẳn, tổng lẻ … trong mảng

 Xây dựng lớp Zoo chứa các động vật có

trong lớp Animal

Thực hiện

45 min

Trang 9

Mảng đa chiều

 Là mảng một chiều mà mỗi phần tử là một mảng khác

 Trên C# hỗ trợ hai kiểu mảng đa chiều:

 Mảng đa chiều cùng kích thước (Rectangle)

 Mảng đa chiều không cùng kích thước (Jagged Array)

Trang 10

Mảng đa chiều cùng kích thước

 Khai báo

<kiểu dữ liệu> [ , ] <tên biến mảng>;

 Ví dụ: int [ ] array;

 Khởi tạo

<tên biến mảng> = new <kiểu DL> [<số dòng>,<số cột>];

 Ví dụ: int [ , ] array = new int [ 3, 5 ];

 Duyệt mảng:

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

for (int j = 0; j < columns; j++)

Xử_lý A{i,j];

Trang 11

Mảng đa chiều khác kích thước

 Khai báo

<kiểu dữ liệu> [ ][ ] <tên biến mảng>;

 Ví dụ: int [ ][ ] array;

 Khởi tạo

<tên biến mảng> = new <kiểu DL> [<số dòng>] [ ];

 Ví dụ: int [ ][ ] array = new int [ 3 ] [ ];

 Khởi tạo từng dòng

<tên biến mảng> [<vị trí dòng>] = new <kiểu DL> [<số cột>];

 Ví dụ: array[0] = new int [ 3 ];

 Truy xuất:

Tên_biến_mảng [rows][columns]

Trang 12

Giao diện tập hợp

 NET cung cấp giao diện chuẩn cho việc liệt kê, so

sánh, và tạo tập hợp

Giao diện Mục đích IEnumerable Liệt kê thông qua một tập hợp

bằng cách sử dụng foreach

IComparer So sánh giữa hai đối tượng lưu

giữ trong tập hợp để sắp xếp các đối tượng trong tập hợp

Trang 14

IComparer

 Định nghĩa cách thức so sánh cho đối tượng

class <Tên_class>: Icomparable

}

 Phương thức CompareTo có tham số đối tượng, so sánh với chính nó Trả về {-1, 0, 1}

Trang 15

IComparerable

public class Employee: IComparable

{

private int empID;

public Employee(int empID) { this.empID = empID;}

public int EmpID {

get { return empID;}

set { empID = value;}

} public override string ToString() { return empID.ToString();}

public int CompareTo(object o) {

Employee r = (Employee) o;

return this.empID.CompareTo(r.empID);

} }

Trang 16

ArrayList empArray = new ArrayList();

Random r = new Random();

// đưa vào mảng for( int i = 0; i < 5; i++) {

empArray.Add( new Employee(r.Next(10)+100));

} // in tất cả nội dung PrintValue(empArray);

// sắp xếp lại mảng Employee empArray.Sort();

// hiển thị tất cả nội dung của mảng Employee PrintValue(empArray);

}

Trang 17

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM

IComparer

 Định nghĩa nhiều cách thức so sánh cho đối tượng

class <Tên_class_con>: Icomparer

get {return CmpType ;}

set { CmpType = value;}

}

// Xem tiếp trang sau

Trang 21

Danh sách liên kết

 Đặt vấn đề:

 Thêm phần tử vào mảng, chi phí O(n)

 Xóa một phần tử trong mảng, chi phí O(n)

 Khó cấp phát

Tách các phần tử riêng rẽ, tìm cách liên kết chúng

Trang 22

Danh sách liên kết

Data 

Thành phần dữ liệu

Địa chỉ liên kết

Trang 23

Danh sách liên kết

 Một dãy tuần tự các nút (Node) liên kết với nhau bằng địa chỉ

 Các nút không cần phải lưu trữ liên tiếp nhau trong bộ nhớ

 Có thể mở rộng tuỳ ý (chỉ giới hạn bởi dung lượng bộ nhớ)

 Thao tác Chèn/Xóa không cần phải dịch chuyển phần tử

 Có thể truy xuất đến các phần tử khác thông qua địa chỉ

Trang 25

private Node<T> next;

public Node(T data)

Trang 26

Danh sách liên kết

public T Data

{

get{ return this.data;}

set{ this.data = value;}

}

public Node<T> Next

{

get { return this.next; }

set { this.next = value;}

}

Trang 31

Danh sách liên kết

class Program

{ static void Main(string[] args)

{

Random r = new Random();

LinkList<int> intList = new LinkList<int>();

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

Trang 32

Q&A

Ngày đăng: 03/12/2015, 06:58

TỪ KHÓA LIÊN QUAN

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