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

Bài giảng kỹ thuật lập trình danh sách liên kết ths đặng bình phương

20 349 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 20
Dung lượng 2,18 MB

Nội dung

Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Trường Đại học Khoa học Tự nhiên KỸ THUẬT LẬP TRÌNH ThS Đặng Bình Phương dbphuong@fit.hcmus.edu.vn DANH SÁCH LIÊN KẾT VC VC && BB BB Nội dung Các hình thức tổ chức danh sách Các loại danh sách liên kết Thao tác DSLK đơn Các ứng dụng DSLK đơn Danh sách liên kết VC VC && BB BB Các hình thức tổ chức danh sách  Mối liên hệ phần tử ngầm hiểu  Mỗi phần tử có số ngầm hiểu xi+1 nằm sau xi Do phần tử phải nằm cạnh nhớ  Số lượng phần tử cố định Khơng có thao tác thêm hủy mà có thao tác dời chỗ  Truy xuất ngẫu nhiên đến phần tử nhanh chóng  Phí nhớ khơng biết trước kích thước  Ví dụ: mảng chiều Danh sách liên kết VC VC && BB BB Các hình thức tổ chức danh sách  Mối liên hệ phần tử rõ ràng  Mỗi phần tử ngồi thơng tin thân cịn có thêm liên kết (địa chỉ) đến phần tử  Các phần tử không cần phải xếp cạnh nhớ  Việc truy xuất đến phần tử địi hỏi phải thơng qua phần tử khác  Tùy nhu cầu, phần tử liên kết theo nhiều cách khác tạo thành danh sách liên kết đơn, kép, vòng Danh sách liên kết VC VC && BB BB Danh sách liên kết  Nhận xét  Số nút không cố định, thay đổi tùy nhu cầu nên cấu trúc động  Thích hợp thực thao tác chèn hủy khơng cần phải dời nút mà cần sửa liên kết cho phù hợp Thời gian thực không phụ thuộc vào số nút danh sách  Tốn nhớ chứa trỏ liên kết pNext  Truy xuất nên thời gian Danh sách liên kết VC VC && BB BB Các loại danh sách liên kết pTail  Danh sách liên kết đơn A B C D E pHead typedef struct tagNode { Data Info; struct tagNode *pNext; } NODE; typedef struct tagList { NODE *pHead; NODE *pTail; } LIST; Danh sách liên kết VC VC && BB BB Các loại danh sách liên kết  Danh sách liên kết kép (Doubly Linked List) A pHead B C typedef struct tagDNode { Data Info; struct tagDNode *pNext, *pPrev; } DNODE; typedef struct tagDList { NODE *pHead; NODE *pTail; } DLIST; D pTail Danh sách liên kết VC VC && BB BB Các loại danh sách liên kết  Danh sách liên kết đơn vòng (Circular Linked List) A pHead B C D typedef struct tagCNode { Data Info; struct tagCNode *pNext; } CNODE; typedef struct tagCList { NODE *pHead; NODE *pTail; } CLIST; E pTail Danh sách liên kết VC VC && BB BB Các loại danh sách liên kết  Danh sách liên kết kép vòng (Circular Linked List) A pHead B C typedef struct tagCNode { Data Info; struct tagCNode *pNext, *pPrev; } CNODE; typedef struct tagCList { NODE *pHead; NODE *pTail; } CLIST; D pTail Danh sách liên kết VC VC && BB BB Danh sách liên kết đơn  Khởi tạo danh sách pHead ? pTail ?  Kiểm tra danh sách có rỗng hay không pHead NULL? pTail Danh sách liên kết 10 VC VC && BB BB Danh sách liên kết đơn  Tạo nút X ? ?  Xác định trỏ nút thứ i danh sách  p = pHead  p = p->pNext i lần p != NULL return lại trỏ p  Xác định vị trí nút p danh sách  Tương tự trả lại vị trí Danh sách liên kết 11 VC VC && BB BB Danh sách liên kết đơn  Chèn nút vào đầu danh sách pTail  Danh sách rỗng pHead X  Danh sách không rỗng X A pTail B C D E pHead Danh sách liên kết 12 VC VC && BB BB Danh sách liên kết đơn  Thêm nút vào cuối danh sách pTail  Danh sách rỗng pHead X pTail  Danh sách không rỗng X A B C D E pHead Danh sách liên kết 13 VC VC && BB BB Danh sách liên kết đơn  Thêm nút vào sau nút q  q == NULL  chèn vào đầu danh sách  q != NULL q X A B C pTail D E pHead Danh sách liên kết 14 VC VC && BB BB Danh sách liên kết đơn  Thêm nút vào trước nút q  q == NULL  chèn vào đầu danh sách  q != NULL  Tìm nút p trước q thêm vào sau nút p q X A pTail B C D E pHead p Danh sách liên kết 15 VC VC && BB BB Danh sách liên kết đơn  Hủy nút đầu danh sách  Danh sách rỗng  khơng làm  Danh sách khơng rỗng (nếu sau hủy mà pHead = NULL pTail = NULL) pTail A B C D E pHead p = pHead Danh sách liên kết 16 VC VC && BB BB Danh sách liên kết đơn  Hủy nút sau nút q  q == NULL  hủy nút đầu danh sách  q != NULL q pTail A B C D E pHead p = q->pNext Danh sách liên kết 17 VC VC && BB BB Danh sách liên kết đơn  Hủy nút cuối danh sách  Nút cuối p (p = pTail)  Tìm nút q trước nút p (nếu có)  Hủy nút sau nút q  Hủy nút có khóa k (Info = k)  Tìm nút p có khóa k hủy nút q trước  Hủy nút sau nút q (nếu có)  Hủy tồn danh sách  Duyệt danh sách để in/tìm/đếm nút Danh sách liên kết 18 VC VC && BB BB Ứng dụng DSLK đơn  Stack (Ngăn xếp)  Làm việc theo chế LIFO (Last In First Out) (Top) pHead C B A pTail (Bottom) Danh sách liên kết 19 VC VC && BB BB Ứng dụng DSLK đơn  Queue (Hàng đợi)  Làm việc theo chế FIFO (First In First Out) pHead (Front) A B C D pTail (Rear) Danh sách liên kết 20

Ngày đăng: 28/05/2016, 09:43

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN