Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 4.2 - Trần Minh Thái (2016)

27 15 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 4.2 - Trần Minh Thái (2016)

Đ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à giải thuật - Chương 4: Danh sách liên kết sẽ giúp sinh viên trình bày, hiểu và vận dụng vào lập trình một số kỹ thuật sau để xử lý trên DSLK đơn gồm: Chèn thêm một node, xoá một node, sắp xếp. Mời các bạn cùng tham khảo.

Chương Danh sách liên kết – Phần Trần Minh Thái Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: ngày 30 tháng 10 năm 2016 Nội dung Sinh viên trình bày, hiểu vận dụng vào lập trình số kỹ thuật sau để xử lý DSLK đơn: Chèn thêm node Xoá node Sắp xếp Chèn node vào DSLK đơn Chèn vào sau node p Chèn vào trước node p 25 pNew p list pHead pTail Chèn node vào sau node p pNew p list pHead pTail Chèn node vào sau node p  Input: DSLK list, node p node cần thêm pNew  Output: list sau thêm pNew vào sau p  Algorithm:  B1: Nếu p pTail list Thêm pNew vào cuối list: Kết thúc  B2: pSau = p.pNext Nối pNew vào pSau Nối p vào pNew ? Cài đặt phương thức thêm pNew vào sau p public void InsertAfterP(Node p, Node pNew) { } Chèn node vào trước node p – Cách pPrev p list pHead pTail pNew Tìm node trước node p  Input: DSLK list, node p  Output: node phía trước node p: pTruoc (nếu khơng có node trước p trả null)  Algorithm:  B1: Nếu p pHead list Trả null: Kết thúc  B2: pTruoc = pHead list  B3: Trong node sau pTruoc khác p thực pTruoc = node sau pTruoc  B4: Trả pTruoc ? Cài đặt phương thức tìm node trước node p public Node PrevNodeP (Node p) { } Chèn node pNew vào trước node p  Input: DSLK list, node p, node cần thêm pNew  Output: list sau thêm pNew vào trước node p (trả true chèn thành công, ngược lại trả false)  Algorithm:  B1: Nếu p pHead list Thêm pNew vào đầu list trả true: Kết thúc  B2: pTruoc = Tìm node trước p  B3: Nếu pTruoc = null trả false: Kết thúc  B4: pTruoc nối với pNew pNew nối với node sau p trả true 10 ? Cài đặt phương thức thêm pNew vào trước node p – Cách public bool InsertBeforeP2 (Node p, Node pNew) { } 13 Xóa node danh sách  TH1: Xóa node đầu danh sách  Ảnh hưởng pHead  TH2: Xóa node cuối danh sách  Ảnh hưởng pTail  TH lại: Xố node bên danh sách 14 Xóa nút danh sách TH1: Xóa nút đầu danh sách Cần xóa 30 list pHead 25 41 pTail pDel 15 78 Xoá node đầu DSLK  Input: DSLK list  Output: list sau xoá node đầu  Algorithm:  B1: Nếu list có pHead = pTail pHead = pTail = null: Kết thúc  B2: Cập nhật pHead node sau pHead 16 ? Cài đặt phương thức xoá node đầu DSLK public void DeleteHead () { } 17 Xóa node danh sách TH 2: Xóa node cuối danh sách Cần xóa pPrev 30 list pHead 25 41 pTail 18 pDel 78 Xoá node cuối danh sách  Input: DSLK list  Output: list sau xoá node cuối  Algorithm:  B1: Nếu list có pHead = pTail pHead = pTail = null: Kết thúc  B2: pTruoc = node trước pTail list pTail = null pTail = pTruoc 19 ? Cài đặt phương thức xoá node cuối DSLK public void DeleteTail () { } 20 Xóa node danh sách TH cịn lại: Xóa node bên danh sách Cần xóa 30 list pHead pPrev pDel 25 41 96 pTail 21 78 Xoá node pDel bên DSLK  Input: DSLK list, node pDel  Output: list sau xoá node pDel  Algorithm:  B1: pTruoc = node trước node pDel  B2: pTruoc nối với node sau pDel  B3: pDel = null Đoạn code C#? 22 Xoá node pDel DSLK  Input: DSLK list, node pDel  Output: list sau xoá node pDel  Algorithm:  B1: Nếu pDel pHead list gọi DeleteHead(), kết thúc  B2: Ngược lại pDel pTail list gọi DeleteTail(), kết thúc  B3: Ngược lại tìm node pTruoc node trước pDel pTruoc nối với node sau pDel pDel = null 23 ? Cài đặt phương thức xoá node pDel DSLK public void DeleteNode (Node pDel) { } 24 Bài tập lớp Định nghĩa phương thức theo yêu cầu sau: Chèn node có giá trị x vào phía sau node có giá trị lớn (giả sử danh sách khơng có giá trị trùng nhau) Xóa node có giá trị x xuất danh sách (nếu có xóa: trả true, ngược lại trả false) Sắp DSLK theo thứ tự tăng dần (dùng phương pháp chọn trực tiếp) 25 Bài tập thực hành Sử dụng lại lớp DSLK đơn (CMyLinkedList), bổ sung phương thức: Khi nhập liệu vào danh sách tìm tự động vị trí thích hợp để chèn vào nhằm đảm bảo có thứ thự tăng dần (áp dụng kỹ thuật chèn trực tiếp khoá so sánh bất kỳ) Bổ sung phương thức xoá node Phương thức xếp theo thứ tự tăng dần dựa vào khoá so sánh 26 ... dụng vào lập trình số kỹ thuật sau để xử lý DSLK đơn: Chèn thêm node Xoá node Sắp xếp Chèn node vào DSLK đơn Chèn vào sau node p Chèn vào trước node p 25 pNew p list pHead pTail Chèn node vào...  B2: pSau = p.pNext Nối pNew vào pSau Nối p vào pNew ? Cài đặt phương thức thêm pNew vào sau p public void InsertAfterP(Node p, Node pNew) { } Chèn node vào trước node p – Cách pPrev p... pháp chọn trực tiếp) 25 Bài tập thực hành Sử dụng lại lớp DSLK đơn (CMyLinkedList), bổ sung phương thức: Khi nhập liệu vào danh sách tìm tự động vị trí thích hợp để chèn vào nhằm đảm bảo có thứ

Ngày đăng: 09/05/2021, 22:15

Từ khóa liên quan

Mục lục

  • Slide 1

  • Nội dung

  • Chèn node vào DSLK đơn

  • Chèn node vào sau node p

  • Chèn node vào sau node p

  • Cài đặt phương thức thêm pNew vào sau p

  • Chèn node vào trước node p – Cách 1

  • Tìm node trước node p

  • Cài đặt phương thức tìm node trước node p

  • Chèn node pNew vào trước node p

  • Cài đặt phương thức thêm pNew vào trước node p – Cách 1

  • Chèn node vào trước node p – Cách 2

  • Cài đặt phương thức thêm pNew vào trước node p – Cách 2

  • Xóa một node trong danh sách

  • Xóa một nút trong danh sách

  • Xoá node đầu của DSLK

  • Cài đặt phương thức xoá node đầu DSLK

  • Xóa một node trong danh sách

  • Xoá node cuối trong danh sách

  • Cài đặt phương thức xoá node cuối DSLK

Tài liệu cùng người dùng

Tài liệu liên quan