1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CẤU TRÚC dữ LIỆU TRONG c (NGÔN NGỮ lập TRÌNH 2 SLIDE)

56 27 0

Đ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 56
Dung lượng 0,91 MB

Nội dung

NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Chương 3: Cấu trúc liệu C# Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Cấu trúc liệu C# I II III Lập trình tổng quát C# Một số cấu trúc liệu C# Các cấu trúc tập hợp C# Bộ môn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Lâp trình tổng quát C# Giới thiệu lập trình tổng quát (Generic Programming) Lớp tổng quát (Generic Class) Phương thức tổng quát (Generic Method) Cấu trúc tổng quát (Generic Struct) Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ Giới thiệu Tổng quát hóa chương trình để hoạt động với kiểu liệu khác nhau, kể kiểu liệu tương lai (thuật tốn xác định) Ví dụ, kiểu ngăn xếp – C: dùng trỏ void – C++: dùng template – Java 1.5: Generics – C#: Generics – (generics [C#], vs C++ templates) Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ Generic NET 2.0 Type Safety: Các ngôn ngữ net (C#, C++, ) đều là ngơn ngữ được định kiểu mạnh, có nghĩa là bạn phải khai báo biến rõ ràng trước sử dụng Generic là gì? Generic cho phep chung ta định kiểu an toàn (type safety) Generic cho phep ta tạo môt câu truc liêu mà không cần phải xác định là kiểu liêu Tuy nhiên câu truc liêu này được sử dụng, trình biên dịch phải đảm bảo kiểu liêu được sử dụng với là kiểu an toàn Generic cũng tương đương vơi Template C++ nhiên viêc sử dụng Generic net dê dàng nhiều so với Template Bộ môn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ Ý nghĩa Lập trình tổng quát cho phép bạn trì hỗn kiểu liệu với thành phần lớp hay phương thức thực sử dụng chương trình Nói cách khác, Generics cho phép bạn viết lớp hay phương thức làm việc với kiểu liệu Khi trình biên dịch gọi đến constructor phương thức lớp, tự động sinh code để xử lý cho kiểu liệu cho phù hợp Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ using System; Ví dụ public T getItem(int index) { using System.Collections.Generic; return array[index];   namespace GenericApplication } { public void setItem(int index, T value) public class MyGenericArray { { array[index] = value; private T[] array; public MyGenericArray(int size) } } { array = new T[size + 1]; } Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ Ví dụ class Tester { intArray.setItem(c, c*5); } static void Main(string[] args) //retrieving the values { for (int c = 0; c < 5; c++) //declaring an int array { MyGenericArray intArray = new MyGenericArray(5); //setting values Console.Write(intArray.getItem(c) + " "); } Console.WriteLine(); for (int c = 0; c < 5; c++) { Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ //declaring a character array Ví dụ //retrieving the values MyGenericArray charArray = new for (int c = 0; c< 5; c++) MyGenericArray(5); { //setting values Console.Write(charArray.getItem(c) + " "); for (int c = 0; c < 5; c++) } { Console.WriteLine(); charArray.setItem(c, (char)(c+97)); Console.ReadKey(); } } //retrieving the values } } Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Giới thiệu LTTQ Features of Generics Using generics is a technique that enriches your programs in the following ways: It helps you to maximize code reuse, type safety, and performance You can create generic collection classes The NET Framework class library contains several new generic collection classes in the System.Collections.Generic namespace You may use these generic collection classes instead of the collection classes in the System.Collectionsnamespace You can create your own generic interfaces, classes, methods, events and delegates You may create generic classes constrained to enable access to methods on particular data types You may get information on the types used in a generic data type at run-time by means of reflection 10 Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp List – Methods Find Tìm kiếm phần tử thỏa mãn điều kiện cho trước, trả về phần tử thỏa mãn đầu tiên FindAll Trả về tât phần tử thỏa mãn điều kiện cho trước FindIndex(Predicate) Tìm kiếm phần tử thỏa mãn điều kiện cho trước, trả về index phần tử thỏa mãn đầu tiên FindIndex(Int32 id, Predicate) Tìm kiếm phần tử phạm vi từ vị trí id đến cuôi danh sách, thỏa mãn điều kiện cho trước, trả về index phần tử thỏa mãn đầu tiên FindIndex(Int32 startid, Int32 count, Tìm kiếm phần tử thỏa mãn điều kiện định nghĩa, trả về index phần tử xuât dầu tiên Predicate) Phạm vi tìm kiếm từ startid, sô lượng phần tử phạm vi tìm kiếm là count 42 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp List – Methods FindLast Tìm kiếm phần tử toàn danh sách Trả về phần tử xt lần ci FindLastIndex(Predicate) Tìm kiếm phần tử thỏa mãn điều kiện cho trước Trả về Index phần tử thỏa mãn cuôi FindLastIndex(Int32 id, Predicate) Tìm kiếm phần tử thỏa mãn điều kiện cho trước Trả về Index phần thử xt ci Phạm vi tìm kiếm từ vị trí id đến ci danh sách FindLastIndex(Int32 startid, Int32 count, Tìm kiếm phần tử thỏa mãn điều kiện cho trước Trả về Index phần tử xuât cuôi Predicate) -Phạm vi tìm kiếm bắt đầu từ startid - Sơ phần tử phạm vi tìm kiếm là count 43 Bộ môn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp List – Methods IndexOf(T) Tìm kiếm đôi tượng T toàn danh sách Trả về vị trí xt lần đầu đơi tượng IndexOf(T, Int32) Giơng IndexOf phạm vi tìm kiếm bắt đầu từ vị trí chi định đến ci danh sách IndexOf(T, Int32 id, Int32 count) + Giông IndexOf + Phạm vi tìm kiếm: Từ vị trí id, sơ lượng phần tử phạm vi là count Insert Chèn phần tử vào danh sách từ vị trí bât kỳ InsertRange Chèn tập phần tử vào danh sách từ vị trí bât kỳ 44 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp List – Methods LastIndexOf(T) Tìm kiếm toàn danh sách, trả về vị trí xuât lần cuôi đôi tượng LastIndexOf(T, Int32 id) Giơng LastIndexOf Phạm vi tìm kiếm từ vị trí id đến cuôi danh sách LastIndexOf(T, Int32 id, Int32 count) Giông LastIndexOf Phạm vi tìm kiếm từ vị trí id, sơ lượng phần tử phạm vi tìm kiếm là count Remove Xóa phần tử xuât đầu tiên đơi tượng RemoveAll Xóa toàn phần tử thỏa mãn điều kiện cho trước RemoveAt Xóa phần tử vị trí 45 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp List – Methods Reverse() Đảo ngược thứ tư phần tử danh sách Reverse(Int32, Int32) Đảo ngược thứ tư phần tử phạm vi Sort() Sắp sếp danh sách sử dụng phep so sánh mặc định kiểu liệu danh sách Sort(IComparer) Sắp xếp phần tử danh sách sử dụng phep so sánh cụ thể Sort(Int32, Int32, IComparer) Sắp xếp phần tử phạm vi chi định, sử dụng phep so sánh cụ thể ToArray Copy phần tử danh sách mảng 46 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp SortedList  Biểu diễn tập cặp khóa/ giá trị (key/value) , xếp theo khóa  Truy cập phần tử index khóa  Khả lưu trữ (capacity) số lượng phần tử mà SortedList chứa  Khi phần tử thêm vào, capacity tự động tăng theo yêu cầu cấp phát nhớ 47 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp SortedList - Constructor SortedList() Tạo SortedList trông Sử dụng giá trị capacity và phep so sánh mặc định SortedList(IComparer) Tạo SortedList trông, sử dụng capacity mặc định, Định nghĩa phep so sánh SortedList(Int32) Tạo SortedList trông, Khởi tạo giá trị capacity và phep so sánh mặc định SortedList(Int32, IComparer) Tạo SortedList trông, Khởi tạo giá trị capacity, định nghĩa phep so sánh 48 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp Capacity Get set sô lượng phần tử mà SortedList chứa Count Sơ lượng cặp key/value SortedList Item Get set giá trị (value) kết hợp với khóa (key) Sử dụng indexer SortedList Keys Get tập key SortedList Values Get tập giá trị SortedList SortedList - Properties 49 Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp SortedList - Methods Add Thêm môt phần tử với cặp key/value vào SortedList Clear Xóa tồn bơ phần tử SortedList ContainsKey Xác định xem SortedList chứa khóa cho trước hay không ContainsValue Xác định xem SortedList chứa giá trị cho trước hay khơng IndexOfKey Tìm kiếm khóa tồn bơ danh sách trả index cặp khóa/giá trị danh sách IndexOfValue Tìm kiếm giá trị trả index xuất hiên tồn bơ SortedList Remove Xóa mơt phần tử biết khóa RemoveAt Xóa phần tử mơt vị trí TrimExcess Đặt giá trị capacity số lượng phần tử SortedList, Nếu số nhỏ 90% giá trị capacity hiên TryGetValue Lấy giá trị biết khóa 50 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp SortedList - Example class Program else { { static void Main(string[] args) sl.Add("008", "Nuha Ali"); { } SortedList sl = new SortedList(); // get a collection of the keys sl.Add("001", "Zara Ali"); ICollection key = sl.Keys; sl.Add("002", "Abida Rehman"); foreach (string k in key) sl.Add("003", "Joe Holzner"); { Console.WriteLine(k + ": " + sl[k]); sl.Add("004", "Mausam Benazir Nur"); sl.Add("005", "M Amlan"); } sl.Add("006", "M Arif"); sl.Add("007", "Ritesh Saikia"); } } if (sl.ContainsValue("Nuha Ali")) { Console.WriteLine("This student name is already in the list"); } Bộ môn CNPM – Khoa CNTT 51 NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp Dictionary Dùng để lưu trữ tập khóa (keys) giá trị (values)  Namespace:  System.Collections.Generic - Assembly:  mscorlib (in mscorlib.dll)  Tên lớp Dictionary 52 Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp Dictionary – Constructor Name Dictionary() Description Initializes a new instance of the Dictionary class that is empty, has the default initial capacity, and uses the default equality comparer for the key type Dictionary(IEqualityComparer< Initializes a new instance of the Dictionary class that is empty, has the default initial capacity, and uses the TKey>) specified IEqualityComparer Dictionary(Int32) Initializes a new instance of the Dictionary class that is empty, has the specified initial capacity, and uses the default equality comparer for the key type Dictionary(Int32, Initializes a new instance of the Dictionary class that is empty, has the specified initial capacity, and uses the IEqualityComparer) specified IEqualityComparer 53 Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp Name Dictionary – Properties Description Comparer Gets the IEqualityComparer that is used to determine equality of keys for the dictionary Count Gets the number of key/value pairs contained in the Dictionary Item Gets or sets the value associated with the specified key Keys Gets a collection containing the keys in the Dictionary Values Gets a collection containing the values in the Dictionary 54 Bộ môn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp Name Dictionary – Methods Description Add Adds the specified key and value to the dictionary Clear Removes all keys and values from the Dictionary ContainsKey Determines whether the Dictionary contains the specified key ContainsValue Determines whether the Dictionary contains a specific value Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection (Inherited from Object.) Remove Removes the value with the specified key from the Dictionary TryGetValue Gets the value associated with the specified key 55 Bộ môn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Các cấu trúc tập hợp internal class Program Dictionary – Example foreach (KeyValuePair pair in d) { { private static void Main() Console.WriteLine("{0}, {1}", { pair.Key, // Example Dictionary again pair.Value); Dictionary d = new Dictionary() } { // Use var keyword to enumerate dictionary {"cat", 2}, foreach (var pair in d) {"dog", 1}, { {"llama", 0}, Console.WriteLine("{0}, {1}", {"iguana", -1} pair.Key, }; pair.Value); // Loop over pairs with foreach } } } 56 Bộ môn CNPM – Khoa CNTT ... NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 C? ??u tr? ?c liệu C# I II III Lập trình tổng quát C# Một số c? ??u tr? ?c liệu C# C? ?c c? ??u tr? ?c tập hợp C# Bộ mơn CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH... CNPM – Khoa CNTT NGƠN NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Một số c? ??u tr? ?c liệu I II Stack queue 20 Bộ môn CNPM – Khoa CNTT NGÔN NGÔN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Một số c? ??u tr? ?c liệu Stack... NGƠN NGỮ NGỮ LẬP LẬP TRÌNH TRÌNH 22 Một số c? ??u tr? ?c liệu Stack class in C# Contructor Tên Mô tả Stack() Khởi tạo Stack trông, capacity ban đầu m? ?c định Stack(ICollection) Khởi tạo Stack chứa

Ngày đăng: 29/03/2021, 12:37

TỪ KHÓA LIÊN QUAN