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 312 1
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

Đ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

Chương 3: Danh sách Giảng viên: Ths Nguyễn Thị Khiêm Hòa Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Nội dung    Danh sách phép toán danh sách Danh sách đặc Danh sách liên kết Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mục tiêu  Hiểu rõ 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 kiểu liệu đặc biệt C#  Đánh giá ưu khuyết điểm giải thuật loại danh sách để chọn kiểu liệu phù hợp Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Danh sách  Định nghĩa Danh sách dãy hữu hạn có thứ tự phần tử thuộc lớp đối tượng  Ký hiệu: L(a1, a2, …, an)  Danh sách tuyến tính danh sách mà quan hệ lân cận phần tử hiển thị Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Danh sách  Tổ chức lưu trữ danh sách nhớ  Mảng - Danh sách đặc  Danh sách liên kết – Danh sách động Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mảng  Tập hợp phần tử kiểu liệu, nằm liên tiếp nhớ  Có số  Giá trị mặc định phần tử mảng quy định theo kiểu đối tượng  Mảng đối tượng  Kích thước: nhiều chiều Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mảng chiều  Khai báo  Khởi tạo  Truy xuất: Chỉ mục đối tượng Tìm kiếm Sắp xếp Tính toán Đếm  Các thuật toán: • • • •  Kỹ thuật • Lính canh • Cờ hiệu Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Bài tập Thực   Xây dựng lớp mảng số nguyên, thực việc tính tổng, tổng chẳn, tổng lẻ … mảng Xây dựng lớp Zoo chứa động vật có lớp Animal 45 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mảng đa chiều  Là mảng chiều mà phần tử mảng khác  Trên C# hỗ trợ hai kiểu mảng đa chiều:  Mảng đa chiều kích thước (Rectangle)  Mảng đa chiều không kích thước (Jagged Array) Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Mảng đa chiều kích thước    Khai báo [ , ] ;  Ví dụ: int [ ] array; Khởi tạo = new [,];  Ví dụ: int [ , ] array = new int [ 3, ]; Duyệt mảng: for (int i = 0; i < rows; i++) for (int j = 0; j < columns; j++) Xử_lý A{i,j]; Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 10 IComparer public int Compare( lhs, rhs) { return lhs.CompareTo(rhs.CmpType); } }//end class Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 18 IComparer //Định nghĩa class class : Icomparable { … public static GetComparer() { return new .; } public int CompareTo( rhs) { Tên_class r = (Tên_class) rhs; return this.Tên_Field.CompareTo(rhs.Tên_Field); }//Phương thức so sánh mặc định //Xem tiếp trang sau Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 19 IComparer //Định nghĩa class public int CompareTo( rhs, ..ComparisionType w) { switch(w) { case ..ComparisionType.field1: return this.field1.CompareTo(rhs.field1); case … } return 0; } //Định nghĩa class … }//end class Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 20 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 phần tử mảng, chi phí O(n)  Khó cấp phát Tách phần tử riêng rẽ, tìm cách liên kết chúng Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 21 Danh sách liên kết Địa liên kết Data  Thành phần liệu Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 22 Danh sách liên kết  Một dãy nút (Node) liên kết với địa  Các nút không cần phải lưu trữ liên tiếp nhớ  Có thể mở rộng tuỳ ý (chỉ giới hạn dung lượng 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 phần tử khác thông qua địa Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 23 Danh sách liên kết  Thêm phần tử  Xóa phần tử  Liệt kê  Tính toán Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 24 Danh sách liên kết public class Node: IComparable where T: IComparable { private T data; private Node next; public Node(T data) { this.data = data; this.next = null; } //Đóng gói DL //các phương thức } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 25 Danh sách liên kết //Đóng public { get{ set{ } gói liệu: Properties T Data return this.data;} this.data = value;} public Node Next { get { return this.next; } set { this.next = value;} } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 26 Danh sách liên kết //các phương thức dùng để so sánh xếp public int CompareTo(Node rhs) { return data.CompareTo(rhs.data); } public bool Equals(Node rhs) { return this.data.Equals(rhs.data); } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 27 Danh sách liên kết public class LinkList where T: IComparable { private Node head; public LinkList() { this.head = null; } //các phương thức } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 28 Danh sách liên kết public void InsertFirst(T data) { if(head == null) head = new Node(data); else { Node node = new Node(data); node.next = head; head = node; } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 29 Danh sách liên kết //In danh sách public void PrintList() { while(head != null) { Console.Write("{0} ", this.head.Data); head = head.Next; } } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 30 Danh sách liên kết class Program { static void Main(string[] args) { Random r = new Random(); LinkList intList = new LinkList(); for (int i = 0; i < 10; i++) { int nextInt = r.Next(10); Console.Write("{0} ", nextInt); intList.InsertFirst(nextInt); } Console.WriteLine("\nDanh sach cac so:"); intList.PrintList(); Console.Read(); } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM } 31 Q&A Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 32 [...]...Mảng đa chiều khác kích thước     Khai báo [ ][ ] ;  Ví dụ: int [ ][ ] array; Khởi tạo = new [] [ ];  Ví dụ: int [ ][ ] array = new int [ 3 ] [ ]; Khởi tạo từng dòng [] = new [];  Ví dụ: array[0] = new int [ 3 ]; Truy xuất: Tên_biến_mảng [rows][columns] Khoa Công nghệ Thông... - Đại học Ngân hàng TP.HCM 20 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 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 21 Danh sách liên kết Địa chỉ liên kết Data  Thành phần dữ liệu Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 22 Danh sách liên kết... public class Tester { static void Main() { 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); } } Khoa Công nghệ Thông tin - Đại học Ngân hàng... giao diện chuẩn cho việc liệt kê, so sánh, và tạo tập hợp Giao diện IEnumerable IComparer Mục đích Liệt kê thông qua một tập hợp bằng cách sử dụng foreach 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 Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 12 IComparer  Cung cấp các phương thức thực hiện việc so sánh và sắp xếp tập hợp Sort() IComparer IComparable... public Node(T data) { this.data = data; this.next = null; } //Đóng gói DL //các phương thức } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 25 Danh sách liên kết //Đóng public { get{ set{ } gói dữ liệu: Properties T Data return this.data;} this.data = value;} public Node Next { get { return this.next; } set { this.next = value;} } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 26 Danh... TP.HCM 30 Danh sách liên kết class Program { static void Main(string[] args) { Random r = new Random(); LinkList intList = new LinkList(); for (int i = 0; i < 10; i++) { int nextInt = r.Next(10); Console.Write("{0} ", nextInt); intList.InsertFirst(nextInt); } Console.WriteLine("\nDanh sach cac so:"); intList.PrintList(); Console.Read(); } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM } 31 ... Ngân hàng TP.HCM 12 IComparer  Cung cấp các phương thức thực hiện việc so sánh và sắp xếp tập hợp Sort() IComparer IComparable (CompareTo) Object Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 13 IComparer  Định nghĩa cách thức so sánh cho đối tượng class : Icomparable { … public int CompareTo(Object o) { Tên_class r = (Tên_class) o; return this.Tên_Field.CompareTo(r.Tên_Field); }... (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ỉ Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 23 Danh sách liên kết  Thêm một phần tử  Xóa một phần tử  Liệt kê  Tính toán Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 24 Danh sách liên kết public class Node: IComparable where... intList.InsertFirst(nextInt); } Console.WriteLine("\nDanh sach cac so:"); intList.PrintList(); Console.Read(); } Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM } 31 Q&A Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM 32 ... dựng lớp đối tượng danh sách đặc, danh sách liên kết kiểu liệu đặc biệt C#  Đánh giá ưu khuyết điểm giải thuật loại danh sách để chọn kiểu liệu phù hợp Khoa Công nghệ Thông tin - Đại học Ngân hàng... tượng Tìm kiếm Sắp xếp Tính toán Đếm  Các thuật toán: • • • •  Kỹ thuật • Lính canh • Cờ hiệu Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM Bài tập Thực   Xây dựng lớp mảng số nguyên,...   Khai báo [ , ] ;  Ví dụ: int [ ] array; Khởi tạo = new [,];  Ví dụ: int [ , ] array = new int [ 3, ]; Duyệt mảng: for

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