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

Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 3 - Nguyễn Đức Nghĩa

130 66 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

Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 3: Các cấu trúc dữ liệu cơ bản cung cấp cho người đọc các kiến thức: Các khái niệm, mảng, danh sách, ngắn xếp, hàng đợi. Mời các bạn cùng tham khảo nội dung chi tiết.

Chương CÁC CẤU TRÚC DỮ LIỆU CƠ BẢN (Basic Data Structures) Structures) CTDL&TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Nội dung 3.1 Các khái niệm 3.2 Mảng 3.3 Danh sách 3.4 Ngăn xếp 3.5 Hàng đợi CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-2 Chương Các cấu trúc liệu 3.1 Các khái niệm 3.2 Mảng 3.3 Danh sách 3.4 Ngăn xếp 3.5 Hàng đợi CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-3 Kiểu liệu (Data types) • Kiểu liệu (data type) đặc trưng bởi: 。tập giá trị (a set of values) 。cách biểu diễn liệu (data representation) sử dụng chung cho tất giá trị 。tập phép tốn (set of operations) thực tất giá trị CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Các kiểu liệu dựng sẵn (Built in data types) (Built • Trong ngơn ngữ lập trình thường có số kiểu liệu nguyên thuỷ xây dựng sẵn Ví dụ 。Kiểu số nguyên (Integer numeric types) • byte, char, short, int, long 。Kiểu số thực dấu phảy động (floating point numeric types) • float, double 。Các kiểu nguyên thuỷ khác (Other primitive types) • boolean 。Kiểu mảng (Array type) • mảng phần tử kiểu BGA CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Dữ liệu kiểu nguyên thuỷ Trong ngơn ngữ lập trình C Type Bits Minimum value Maximum value byte -128 127 short 16 -32768 32767 char 16 65535 int 32 -2147483648 = -231 2147483647 = 231-1 long 64 -9223372036854775808 9223372036854775807 float 32   1.40  10 45   3.40  1038 double 64   4.94  10324   1.80  10308 Có thể có kiểu boolean với hai giá trị true false CuuDuongThanCong.com Phép toán kiểu liệu nguyên thuỷ • Đối với kiểu: byte, char, short, int, long 。+, - , *, /, %, đổi thành xâu, • Đối với kiểu: float, double 。+, -, *, /, round, ceil, floor, • Đối với kiểu: boolean 。kiểm giá trị true, hay kiểm giá trị false • Nhận thấy rằng: Các ngơn ngữ lập trình khác sử dụng mơ tả kiểu liệu khác Chẳng hạn, PASCAL C có mơ tả liệu số khác CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội BGA Kiểu liệu trừu tường (Abstract Data Types) • Kiểu liệu trừu tượng (Abstract Data Type -ADT) bao gồm: 。tập giá trị (set of values) 。tập phép tốn (set of operations) thực với tất giá trị • Phần kiểu liệu (Data Type) bị bỏ qua ADT ? 。cách biểu diễn liệu (data representation) sử dụng chung cho tất giá trị • Việc làm có ý nghĩa làm trừu tượng hoá khái niệm kiểu liệu ADT khơng cịn phụ thuộc vào cài đặt, khơng phụ thuộc ngơn ngữ lập trình CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Kiểu liệu trừu tượng (Abstract Data Type - ADT) • Ví dụ: ADT Đối tượng (Object) Phép tốn (Operations) Danh sách (List) nút chèn, xố, tìm, Đồ thị (Graphs) đỉnh, cạnh duyệt, đường đi, Integer -∞ ,-1, 0, 1, +∞ +, -, *, v.v Real -∞, , +∞ +, -, *, v.v Ngăn xếp phần tử pop, push, isEmpty, Hàng đợi Các phần tử enqueue, dequeue, Cây nhị phân nút traversal, find, CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-9 Kiểu liệu trừu tượng (Abstract Data Type - ADT) • Điều dễ hiểu kiểu liệu ngun thuỷ mà ngơn ngữ lập trình cài đặt sẵn coi thuộc vào kiểu liệu trừu tượng Trên thực tế chúng cài đặt kiểu liệu trừu tượng ngơn ngữ lập trình cụ thể • Định nghĩa Ta gọi việc cài đặt (implementation) ADT việc diễn tả câu lệnh ngơn ngữ lập trình để mơ tả biến ADT thủ tục ngôn ngữ lập trình để thực phép tốn ADT, ngôn ngữ hướng đối tượng, lớp (class) bao gồm liệu (data) phương thức xử lý (methods) CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-10 Kiểu liệu - Kiểu liệu trừu tượng Cấu trúc liệu (Data Types, Data Structures and Abstract Data Types) • Có thể nói thuật ngữ: kiểu liệu, kiểu liệu trừu tượng cấu trúc liệu nghe giống nhau, thực chúng có ý nghĩa khác 。Trong ngơn ngữ lập trình, kiểu liệu biến tập giá trị mà biến nhận Ví dụ, biến kiểu boolean nhận giá trị sai Các kiểu liệu thay đổi từ ngơn ngữ lập trình sang NNLT khác Ta tạo kiểu liệu phức hợp từ kiểu liệu Cách tạo phụ thuộc vào ngơn ngữ lập trình 。Kiểu liệu trừu tượng mơ hình tốn học với phép tốn xác định mơ hình Nó khơng phụ thuộc vào ngơn ngữ lập trình 。Để biểu diễn mơ hình tốn học ADT ta sử dụng cấu trúc liệu CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-11 Cấu trúc liệu (Data Structures) • Cấu trúc liệu (Data Structures) họ biến, có kiểu liệu khác nhau, liên kết lại theo cách thức • Việc cài đặt ADT đòi hỏi lựa chọn cấu trúc liệu để biểu diễn ADT • Ta xét xem việc làm tiến hành nào? • Ô (cell) đơn vị sở cấu thành cấu trúc liệu Có thể hình dung hộp đựng giá trị phát sinh từ kiểu liệu hay phức hợp • Cấu trúc liệu tạo nhờ đặt tên cho nhóm ô đặt giá trị cho số ô để mơ tả liên kết • Ta xét số cách tạo nhóm CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-12 Cấu trúc liệu (Data Structures) • Một cách tạo nhóm đơn giản ngơn ngữ lập trình mảng (array) Mảng dãy có kiểu xác định • Ví dụ: Khai báo PASCAL (C) sau PASCAL C name: array[1 10] of integer; int name[10] khai báo biến name gồm 10 phần tử kiểu sở ngun (integer) • Có thể truy xuất đến phần tử mảng nhờ tên mảng với số • Ta xét kỹ kiểu mảng mục CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-13 Cấu trúc liệu (Data Structures) • • • • Một phương pháp chung hay dùng để nhóm cấu trúc ghi (record structure) Bản ghi (record) ô tạo họ (gọi trường) có kiểu khác Các ghi lại thường nhóm lại thành mảng; kiểu xác định việc nhóm trường ghi trở thành kiểu phần tử mảng Ví dụ: Trong PASCAL/C mơ tả PASCAL C var reclist: array[1 100] of record data: real; next: integer; end; struct record { float data; int next; } reclist[100]; khai báo reclist mảng 100 phần tử, ô ghi gồm trường: data next CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-14 Cấu trúc liệu (Data Structures) • Phương pháp thứ ba để nhóm file File, giống mảng chiều, dãy giá trị kiểu • Tuy nhiên, phần tử file truy xuất cách tuần tự, theo thứ tự mà chúng xuất file • Trái lại, mảng ghi cấu trúc trực truy ("random-access"), nghĩa thời gian để truy xuất đến thành phần mảng (hay ghi) không phụ thuộc vào số mảng (hay trường lựa chọn) • Bên cạnh cần nhấn mạnh ưu điểm kiểu file số phần tử khơng bị giới hạn! CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-15 Cấu trúc liệu (Data Structures) • Khi lựa chọn cấu trúc liệu cài đặt ADT vấn đề cần quan tâm thời gian thực phép toán ADT Bởi vì, cách cài đặt khác dẫn đến thời gian thực phép tốn khác • Ví dụ: Xét cài đặt ADT từ điển (Dictionary ADT) • ADT từ điển bao gồm: 。Cần lưu trữ tập cặp , để tìm kiếm value theo key Mỗi key có khơng q value 。Các phép tốn bản: • insert(k,v) : chèn cặp (k,v) vào từ điển • find(k): Nếu (k,v) có từ điển trả lại v, trái lại trả 0; • remove(k) : Xố bỏ cặp (k,v) từ điển CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-16 Cấu trúc liệu (Data Structures) • Xét ba phương pháp cài đặt từ điển: 。Danh sách móc nối (Linked list); 。Mảng xếp (Sorted array); 。Cây tìm kiếm (Search tree) • Bảng cho đánh giá thời gian việc thực phép toán: Cài đặt Insert Find Remove Linked List O(n) O(n) O(n) Sorted Array O(n) O(log n) O(n) Search Tree O(log n) O(log n) O(log n) CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-17 Con trỏ (Pointer) • Một ưu phương pháp nhóm NNLT ta biểu diễn mối quan hệ ô nhờ sử dụng trỏ • Định nghĩa Con trỏ (pointer) mà giá trị khác • Khi vẽ cấu trúc liệu, để thể ô A trỏ đến ô B, ta sử dụng mũi tên hướng từ A đến B A • B Ví dụ: Để tạo biến trỏ ptr để trỏ đến có kiểu cho trước, chẳng hạn celltype, ta khai báo: Trong PASCAL Trong C var celltype *ptr ptr: ^celltype; CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-18 Phân loại cấu trúc liệu • Trong nhiều tài liệu CTDL thường sử dụng phân loại cấu trúc liệu sau đây: 。Cấu trúc liệu sở (Base data structures) Ví dụ: Pascal: integer, char, real, boolean, ; C: int, char, float, double, 。Cấu trúc liệu tuyến tính (Linear data structures) Ví dụ: Mảng (Array), Danh sách liên kết (Linked list), Ngăn xếp (Stack), Hàng đợi (Queue), 。Cấu trúc liệu phi tuyến (Nonlinear data structures) Ví dụ: Cây (trees), đồ thị (graphs), bảng băm (hash tables), CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-19 Chương Các cấu trúc liệu 3.1 Các khái niệm 3.2 Mảng 3.3 Danh sách 3.4 Ngăn xếp 3.5 Hàng đợi CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-20 n = 0, x = module power(x, n) tmp = { create a Stack initialize a Stack loop{ if (n == 0) then {exit loop} push n onto Stack n = n/2 } tmp = loop { if (Stack is empty) then {return tmp} pop n off Stack if (n is even) {tmp = tmp*tmp} else {tmp = tmp*tmp*x} } tmp } n x Stack Runtime stack n = 0, x = module power(x, n) { tmp = 32 create a Stack initialize a Stack loop{ if (n == 0) then {exit loop} push n onto Stack n = n/2 } tmp = loop { if (Stack is empty) then {return tmp} pop n off Stack if (n is even) {tmp = tmp*tmp} else {tmp = tmp*tmp*x} } } tmp CuuDuongThanCong.com n x Stack 32 Runtime stack Cài đặt không đệ qui sử dụng stack double power(double x, int n) { double tmp = 1; Stack theStack; initializeStack(&theStack); while (n != 0) { push(&theStack, n); n /= 2; } Cách mô tả gần với C ! while (!stackEmpty(&theStack)) { n = pop(&theStack); if (n % == 0) { tmp = tmp*tmp;} else { tmp = tmp*tmp*x;} } return tmp; } 233 Chương Các cấu trúc liệu 3.1 Các khái niệm 3.2 Mảng 3.3 Danh sách 3.4 Ngăn xếp 3.5 Hàng đợi CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-234 3.5 Hàng đợi 3.5.1 Kiểu liệu trừu tượng hàng đợi 3.5.2 Cài đặt hàng đợi mảng 3.5.3 Cài đặt hàng đợi danh sách móc nối 3.5.4 Một số ví dụ ứng dụng hàng đợi Ứng dụng Chuyển đổi xâu chữ số thành số thập phân Ứng dụng Nhận biết Palindromes CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-235 ADT hàng đợi (ADT queues) • Hàng đợi danh sách có thứ tự phép tốn chèn ln thực phía gọi phía sau hay cuối (back or rear), cịn phép tốn xố thực phía cịn lại gọi phía trước hay đầu (front or head) • Thuật ngữ thường dùng cho hai thao tác chèn xoá hàng đợi tương ứng đưa vào (enqueue) đưa (dequeue) • Các phần tử lấy khỏi hàng đợi theo qui tắc Vào trước - Ra trước Vì hàng đợi cịn gọi danh sách vào trước trước (First-In-First-Out (FIFO) list) CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-236 ADT hàng đợi (ADT queues) • Các thuật ngữ liên quan đến hàng đợi mơ tả hình vẽ sau đây: Bổ sung/ Đưa vào Add/ Enqueue Phía sau/Cuối Back/Rear Phía trước/Đầu Front/Head Loại bỏ/ Đưa (Remove/ Dequeue) • Hàng đợi có tính chất hàng đợi chờ phục vụ thực tế CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Using a Queue CuuDuongThanCong.com Chap02-237 Queues Everywhere! Các phép tốn • Q = init(); Khởi tạo Q hàng đợi rỗng • isEmpty(Q); Trả lại "true" hàng đợi Q rỗng • isFull(Q); Trả lại "true" hàng đợi Q tràn, cho biết ta sử dụng vượt kích thước tối đa dành cho hàng đợi • front(Q); Trả lại phần tử phía trước (front) hàng đợi Q gặp lỗi hàng đợi rỗng • enqueue(Q,x); Chèn phần tử x vào phía sau (back) hàng đợi Q Nếu việc chèn dẫn đến tràn hàng đợi cần thơng báo điều • dequeue(Q,x); Xố phần tử phía trước hàng đợi, trả lại x thơng tin chứa phần tử Nếu hàng đợi rỗng cần đưa thơng báo lỗi • print(Q); Đưa danh sách tất phần tử hàng đợi Q theo thứ tự từ phía trước đến phía sau • size(Q); Trả lại số lượng phần tử hàng đợi Q CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ mơn KHMT – ĐHBK Hà nội Ví dụ Operation enqueue(5) enqueue(3) dequeue() enqueue(7) dequeue() front() dequeue() dequeue() isEmpty() size() enqueue(9) enqueue(7) enqueue(3) enqueue(5) dequeue() Output – – – 7 “error” true – – – – Q (5) (5, 3) (3) (3, 7) (7) (7) () () () () (9) (9, 7) (9, 7, 3) (9, 7, 3, 5) (7, 3, 5) 241 CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Queues CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội 242 Ứng dụng hàng đợi • Ứng dụng trực tiếp 。Danh sách xếp hàng chờ mua vé tàu xe, chờ gửi xe, chờ phục vụ hàng ăn, chờ mượn sách thư viện, 。Chia sẻ tài nguyên (ví dụ, printer, CPU, nhớ, ) 。Tổ chức thực đa chương trình (Multiprogramming) 。 • Ứng dụng gián tiếp (Indirect applications) 。Cấu trúc liệu bổ trợ cho thuật toán 。Là thành phần cấu trúc liệu khác 。 CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội 3.5 Hàng đợi 3.5.1 Kiểu liệu trừu tượng hàng đợi 3.5.2 Cài đặt hàng đợi mảng 3.5.3 Cài đặt hàng đợi danh sách móc nối 3.5.4 Một số ví dụ ứng dụng hàng đợi Ứng dụng Chuyển đổi xâu chữ số thành số thập phân Ứng dụng Nhận biết Palindromes CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-244 Cài đặt hàng đợi mảng Array based Queue Array • Sử dụng mảng Q kích thước N theo thứ tự vịng trịn • Có hai biến để lưu trữ vị trí đầu cuối (front and rear) f số phần tử đầu hàng đợi r số vị trí sau vị trí phần tử cuối hàng đợi • Vị trí r giữ rỗng cấu hình bình thường Q f r cấu hình xoay vịng trịn Q r f Các phép tốn • Ta sử dụng phép toán theo modulo (phần dư phép chia) Algorithm size() return (N  f + r) mod N Algorithm isEmpty() return (f = r) Q f r r Q f CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Phép tốn chèn - Đưa vào (enqueue) • Phép toán enqueue phải để ý đến lỗi tràn hàng đợi • Lỗi cần xử lý người sử dụng Algorithm enqueue(o) if size() = N  then Error("FullQueue") else Q[r]  o r  (r + 1) mod N Q f r r Q f CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Phép tốn loại bỏ - Đưa (dequeue) • Phép tốn loại bỏ (dequeue) cần xử lý lỗi hàng đợi rỗng Algorithm dequeue() if isEmpty() then Error("EmptyQueue") else o  Q[f] f  (f + 1) mod N return o Q f r r Q f CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Demo: d:\ \0DEMOCODE\QueueArray.c 3.5 Hàng đợi 3.5.1 Kiểu liệu trừu tượng hàng đợi 3.5.2 Cài đặt hàng đợi mảng 3.5.3 Cài đặt hàng đợi danh sách móc nối 3.5.4 Một số ví dụ ứng dụng hàng đợi Ứng dụng Chuyển đổi xâu chữ số thành số thập phân Ứng dụng Nhận biết Palindromes CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-249 Cài đặt hàng đợi danh sách móc nối • Ta cài đặt hàng đợi danh sách móc nối đơn đơi • Ví dụ: khai báo sau sử dụng để mô tả hàng đợi danh sách móc nối đơn: typedef struct _node { DataType element; struct _node *next; } node; typedef struct { node *front; node *back; } queue; DataType kiểu liệu đối tượng cần lưu giữ, khai báo trước • Các phép tốn hàng đợi mơ tả danh sách móc nối cài đặt tương tự danh sách móc nối trình bày Ta khơng trình bày lại chi tiết CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-250 3.5 Hàng đợi 3.5.1 Kiểu liệu trừu tượng hàng đợi 3.5.2 Cài đặt hàng đợi mảng 3.5.3 Cài đặt hàng đợi danh sách móc nối 3.5.4 Một số ví dụ ứng dụng hàng đợi Ứng dụng Chuyển đổi xâu chữ số thành số thập phân Ứng dụng Nhận biết Palindromes CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-251 Ví dụ: Chuyển đổi xâu chữ số thành số thập phân Thuật tốn mơ tả sơ đồ sau: // Chuyển dãy chữ số Q thành số thập phân n // Loại bỏ dấu cách đầu (nếu có) { dequeue(Q, ch) } until ( ch != blank) // ch chứa chữ số // Tính n từ dãy chữ số hàng đợi n = 0; done = false; { n = 10 * n + số nguyên mà ch biểu diễn if (! isEmpty(Q) ) dequeue(Q,ch) else done = true } until ( done || ch != digit) // Kết quả: n chứa số cần tìm CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-252 Ví dụ: Nhận biết Palindromes • Định nghĩa Ta gọi palindrome xâu mà đọc từ trái qua phải giống đọc từ phải qua trái • Ví dụ: 。 NOON, DEED, RADAR, MADAM 。 ABLE WAS I ERE I SAW ELBA • Một cách nhận biết xâu cho trước có phải palindrome hay khơng ta đưa ký tự đồng thời vào hàng đợi ngăn xếp Sau loại bỏ ký tự khỏi hàng đợi ngăn xếp tiến hành so sánh: 。 Nếu phát khác hai ký tự, ký tự lấy từ ngăn xếp ký tự lấy từ hàng đợi, xâu xét khơng palindrome 。 Nếu tất cặp ký tự lấy trùng xâu xét palindrome 253 CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ mơn KHMT – ĐHBK Hà nội Ví dụ minh hoạ thuật toán: "RADAR" Bước 1: Đưa “RADAR” vào Queue Stack: R Queue (cuối bên phải) R Stack (top bên trái) R A RA AR D RAD DAR A RADA ADAR R RADAR RADAR Ký tự thời CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội 254 Nhận biết "RADAR" có phải palindrome Bước 2: Xố bỏ “RADAR” khỏi Queue Stack: Queue (head bên trái) head Queue top Stack Stack (top bên trái) RADAR ADAR DAR R A D R A D RADAR ADAR DAR AR R A R A R AR R empty empty empty empty Kết luận: Xâu "RADAR" palindrome 255 Hết chương CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02-256 CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap03-257 Kiểu liệu trừu tường (Abstract Data Types) • • • • • • • • Một nguyên lý công nghệ phần mềm là: Tách giao diện (cái mà bạn làm) khỏi cài đặt (cái thực cách nào) (Separate the interface (what you can do) from the implementation (how it is done)) Kiểu liệu trừu tượng (Abstract Data Type -ADT) giao diện họ liệu An array is probably the most versatile or fundamental Abstract Data Type, left until now simply to show it was reasonable to consider others An array is a finite sequence of storage cells, for which the following operations are defined: create(A,N) creates an array A with storage for N items; A[i]=item stores item in the i th position in the array A; and A[i] returns the value of the item stored in the i th position in the array A CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội 258 3.4 Ngăn xếp (Stacks) 3.4 Introduction Consider the problems on pp 170-1 (1) Model the discard pile in a card game (2) Model a railroad switching yard (3) Parentheses checker (4) Calculate and display base-two representation 26 = ???????2 CuuDuongThanCong.com ... 65 535 int 32 -2 1474 836 48 = - 231 21474 836 47 = 231 -1 long 64 -9 2 233 72 036 854775808 92 233 72 036 854775807 float 32   1.40  10 45   3. 40  1 038 double 64   4.94  10? ?32 4   1.80  1 030 8 Có thể... mảng 37 Chương Các cấu trúc liệu 3. 1 Các khái niệm 3. 2 Mảng 3. 3 Danh sách 3. 4 Ngăn xếp 3. 5 Hàng đợi CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap02 -3 8 3. 3 Danh... – NGUYỄN ĐỨC NGHĨA – Bộ môn KHMT – ĐHBK Hà nội Chap 0 3- 19 Chương Các cấu trúc liệu 3. 1 Các khái niệm 3. 2 Mảng 3. 3 Danh sách 3. 4 Ngăn xếp 3. 5 Hàng đợi CuuDuongThanCong.com CTDL & TT – NGUYỄN ĐỨC

Ngày đăng: 11/01/2020, 17:02

Xem thêm:

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN