... liênkết đơn: phầntửliênkết với phầntử đứng sau danhsách - Danhsáchliênkết đôi/kép: phầntửliênkết với phầntử đứng trước sau danhsách - Danhsáchliênkết vòng: phầntử cuối danhsách ... cuối danhsáchliênkết với phầntử đầu danhsách1. 3 Danhsáchliênkếtđơn1. 3 .1 Khái niệm Danhsáchliênkếtđơn cấu trúc lưu trữ phầntửdanhsách không cố định, phầntửdanhsách truy cập ... sinh viên danhsáchliênkếtđơn CHƯƠNG 1: CƠ SỞ LÝTHUYẾT Tổng quan danhsáchliênkết1.1 Định nghĩa Danhsáchliênkếtdanhsách mà phầntử ( Node) liênkết với nhờ vào vùng liênkết chúng...
... cập đến loại danhsáchliênkếtDanhsáchliênkếtđơn - Danhsáchliênkếtđơndanhsách mà Node có trường liênkết - Các hình mô tả danhsáchliênkếtđơn SVTH: Lê Hồng Lĩnh Lớp : T16TMT Đề tài: ... sáchliênkếtđơn + Danhsáchliênkết đôi/kép + Danhsách đa liênkết + Danhsáchliênkết vòng +… - Mỗi loại danhsáchliênkết có cách biểu diễn phầntử (cấu trúc dư liệu) riêng thao tác Trong ... &y; x =12 y=0 px *px = x; x =12 y=x =12 px Con trỏ px trỏ tới địa biến y giá trị biến y 12 1. 2 Danhsáchliênkết1. 2 .1 Định nghĩa: - Danhsáchliênkếtdanhsách mà phầntử (Node) liênkết với...
... Danhsáchphầntử số có thứ tự tăng danhsách mà với cặp phầntử X, Y ta có X < = Y X xuất trước Y danhsách Chú ý : danhsách có phầntử xem danhsách SẮP XẾP THỨ TỰ TRÊN DANHSÁCHLIÊNKẾT ... 1 Nguyễn Thò Hồng Nhi MSSV:K30 -10 1-066 Trần Minh Phương MSSV:K30 -10 1-074 LỚP:3/B SẮP XẾP THỨ TỰ TRÊN DANHSÁCHLIÊNKẾT Một danhsách có thứ tự (danh sách sắp) danhsách mà phầntử xếp ... Bước 1: Nếu DS có phầntử dừng Bước 2: Chọn X phầntử đầu danhsách làm phầntử cầm canh Loại X khỏi danhsách h Bước 3: Tách DS làm DS1 (gồm phầntử ≤ X) DS2 (gồm phầntử >X) Bước 4: Nếu DS1!=NULL...
... 11 Các phép toán DSLK đơn TẠO DANHSÁCH RỖNG THÊM MỘT PHẦNTỬ VÀO CUỐI DANHSÁCH THÊM MỘT PHẦNTỬ SAU MỘT PHẦNTỬ KHÁC XÓA MỘT PHẦNTỬ RA KHỎI DANHSÁCH GHÉP NỐI DSLK ĐƠN THÀNH MỘT DSLK ĐƠN 12 ... = NIL 10 14 THÊM MỘT PHẦNTỬ VÀO CUỐI DANHSÁCH • Ví dụ ta muốn thêm phầntử X = 10 vào cuối danhsách L Bước New (P); P->infor = X; P->Next = NIL q 10 15 THÊM MỘT PHẦNTỬ VÀO CUỐI DANHSÁCH • ... SÁCH • Ví dụ ta muốn thêm phầntử X = 10 vào cuối danhsách L Bước New (P); P->infor = X; P->Next = NIL q 10 16 DANHSÁCH SAU KHI CHÈN L 10 17 THÊM MỘT PHẦNTỬ SAU MỘT PHẦNTỬ KHÁC PROCEDURE INSERTAFTER(L,M,X)...
... } } Bài 3: cho danhsách sinh viên sinh viên gồm thông tin: MSSV, họ tên, đ 1: Nhập danhsách sinh viên 2: Xuất danhsách sinh viên 3: Xoá sinh viên với MSSV khỏi danhsách 4: Sắp xếp danhsách ... p=p->pNext; } Init(l); } Bài 2: cho danhsáchliênkết l1 l2, gồm phầntử số nguyên, thực 1: xếp l1 l2 tắng dần 2: nối l1 l2 thành l3 cho l3 tăng dần file noidanhsachtang.h Code: #ifndef NOIDS ... else if( p2==NULL && p1!=NULL ) { Add=GetNode(p1->data); AddTail(l3,Add); p1=p1->pNext; } else { if(p1->data < p2->data ) { Add=GetNode(p1->data); AddTail(l3,Add); p1=p1->pNext; } else { Add=GetNode(p2->data);...
... thuật giải Thêm phầntử có khóa x vào danhsách Hủy phầntửdanhsách Duyệt danhsách Sắp xếp danhsáchliênkếtđơn Khởi tạo danhEdit Master Click To sáchliênkết Title Style Địa nút ... Duyệt danhsách thao tác thường thực có nhu cầu cần xử lý phầntửdanhsách như: Đếm phầntửdanhsách Tìm tất phầntửdanhsách thảo điều kiện Hủy toàn danhsách Thuật toán duyệt danhsách ... To DSLK Đơn CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải x0 x1 x2 Title Style x3 Mỗi phầntửliênkết với phầntử đứng liền sau danhsách Mỗi phầntửdanhsáchliênkếtđơn cấu...
... *Trường hợp 1: Nếu l rỗng kết thúc *Trường hợp 2: Nếu danhsách có phầntửxóa đầu Ngược lại: B1: pTruoc trỏ đứng trước trỏ cuối danhsách B2: Cho pTruoc trỏ tới NULL B3: Xóa trỏ cuối B4: ... vào: DSLK đơn l, node p để xác định node cần xóa - Kết quả: DSLK đơn l sau xóa trước phầntử p - Giải thuật: *Trường hợp 1: Nếu p trỏ đầu kết thúc *Trường hợp 2: (p khác trỏ đầu) B1: pTruoc trỏ ... vào: DSLK đơn l, node p để xác định node cần xóa - Kết quả: DSLK đơn l sau xóaphầntử sau p - Giải thuật: *Trường hợp 1: Nếu p trỏ cuối kết thúc *Trường hợp 2: (p khác trỏ cuối) B1: pSau trỏ...
... thuật giải Thêm phầntử có khóa x vào danhsách Hủy phầntửdanhsách Duyệt danhsách Sắp xếp danhsáchliênkếtđơn Khởi tạo danhEdit Master Click To sáchliênkết Title Style Địa nút ... Duyệt danhsách thao tác thường thực có nhu cầu cần xử lý phầntửdanhsách như: Đếm phầntửdanhsách Tìm tất phầntửdanhsách thảo điều kiện Hủy toàn danhsách Thuật toán duyệt danhsách ... To DSLK Đơn CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Cấu trúc liệu thuật giải x0 x1 x2 Title Style x3 Mỗi phầntửliênkết với phầntử đứng liền sau danhsách Mỗi phầntửdanhsáchliênkếtđơn cấu...
... while(!isEmpty()) pop(); } Lấy khỏi stack phầntử đỉnh stack Mục đích: Loại phầntử stack S Sử dụng: S.pop(); Đầu vào: stack S Đầu ra: stack S bớt phầntử đỉnh stack không rỗng Code: template next; delete Otop; } } Thêm phầntử kiểu T vào stack Mục đích: Thêm phầntử T vào stack S Sử dụng: S.push(T); Đầu vào: stack S giá trị có kiểu T Đầu ra: stack S thêm phầntử mà giá trị T Code: template ... T O R Mục đích: tạo ngăn xếp giống ngăn xếp S1 có sẵn Sử dung: Stack S ( S1); Đầu vào: Ngăn xếp S1 tồn Đầu ra: ngăn xếp S giống ngăn xếp S1 liệu vị trí nhớ khác Code: template ...
... DSLK đơn l - Kết quả: DSLK đơn l sau xóaphầntử đầu - Giải thuật: *Trường hợp 1: Nếu l rỗng kết thúc *Trường hợp 2: (l khác rỗng) B1: pXoa trỏ đầu danhsách B2: Cho trỏ đầu trỏ vào phầntử B3: Xóa ... - Đầu vào: DSLK đơn l, phầntử k cần thêm phầntử p - Kết quả: DSLK đơn l sau thêm k sau p - Giải thuật: *Trường hợp 1: Nếu p trỏ cuối danhsách Thêm k vào cuối danhsách l *Trường hợp 2: ... vào: DSLK đơn l, phầntử p cần thêm - Kết quả: DSLK đơn l sau thêm - Giải thuật: *Trường hợp 1: Nếu l rỗng Con trỏ đầu cuối danhsách = p *Trường hợp 2: (l khác rỗng) B1: Con trỏ cuối danhsách trỏ...
... DSLK đơn l, điều kiện bên (nếu có: ví dụ giá trị x để so sánh) - Kết quả: Trả số lượng phầntử thỏa điều kiện danhsách - Giải thuật: B1: d=0 p trỏ vào đầu danhsách B2: Nếu p = NULL trả d Kết ... Nếu giá trị p thỏa điều kiện Trả Kết thúc B4: p trỏ đến phầntử kế tiếp, quay lại B2 - Cài đặt (Giả sử kiểm tra xem danhsách có tồn phầntử có giá trị lẻ danhsách số nguyên): int KiemTraTonTaiLe(LIST ... B1: p trỏ vào đầu danhsách B2: Nếu p = NULL trả Kết thúc B3: Nếu giá trị p KHÔNG thỏa điều kiện Trả Kết thúc B4: p trỏ đến phầntử kế tiếp, quay lại B2 - Cài đặt (Giả sử kiểm tra xem toàn phần...
... - Đầu vào: DSLK đơn l - Kết quả: In giá trị phầntửdanhsách hình - Giải thuật: B1: p trỏ đầu danhsách B2: Nếu p = NULL kết thúc Ngược lại In giá trị p B3: p trỏ đến phầntử kế tiếp, quay ... DSLK đơn l, phầntử p - Kết quả: Trả trỏ đứng trước phầntử p (hoặc NULL: Nếu không có) - Giải thuật: *Trường hợp 1: Nếu p trỏ vào đầu danhsách trả NULL *Trường hợp 2: Ngược lại trường hợp B1: ... - Đầu vào: DSLK đơn l - Kết quả: In giá trị phầntửdanhsách thỏa điều kiện hình - Giải thuật: B1: p trỏ vào đầu danhsách B2: Nếu p = NULL kết thúc B3: Nếu giá trị p thỏa điều...
... DSLK đơn l, giá trị x - Kết quả: Trả trỏ tìm (hoặc NULL: Nếu x) - Giải thuật: B1: p trỏ vào đầu danhsách B2: Nếu p = NULL trả NULL Kết thúc Ngược lại sang B3 B3: Nếu giá trị p = x trả p Kết thúc ... if(p->Key>pMax->Key) pMax = p; p=p->pNext; } return pMax; } 1. 3 Tìm phầntử có giá trị thỏa điều kiện xuất (Giả sử phầntử có giá trị chẵn xuất danhsách số nguyên) (SV tự vẽ hình minh họa) ... Đầu vào: DSLK đơn l - Kết quả: Trả trỏ max tìm - Giải thuật: B1: pMax trỏ vào đầu danhsách p trỏ vào sau pMax B2: Nếu p = NULL trả pMax Kết thúc Trang GV: Trần Minh Thái...
... sau phầntử Cấu trúc liệu thuật giải • Hủy phầntửdanhsách – Hủy phầntử đầu danhsách – Hủy phầntử cuối danhsách – Hủy phầntử sau phầntử khác – Hủy phần tửcó khoá x Duy ệt danhsách ... chức DSLK đơn x0 x1 x2 Mỗi phầntửliênkết với phầntử đứng liền sau danhsách • Cấu trúc liệu thuật giải x3 Mỗi phầntửdanhsáchliênkếtđơn cấu trúc có hai thành phần – Thành phần liệu: ... liệu: Lưu trữ thông tin thân phầntử – Thành phầnliên kết: Lưu địa phầntử đứng sau danhsách NULL phầntử cuối danhsách CTDL DSLK đơn Cấu trúc liệu nút List đơn Cấu trúc liệu thuật giải...
... DSLK đơn l Kết quả: DSLK đơn l sau xóaphầntử cuối Giải thuật: *Trường hợp 1: Nếu l rỗng kết thúc *Trường hợp 2: Nếu danhsách có phầntửxóa đầu Ngược lại: B1: pTruoc trỏ đứng trước trỏ cuối danh ... DSLK đơn l, phầntử k cần thêm phầntử p Kết quả: DSLK đơn l sau thêm k sau p Giải thuật: *Trường hợp 1: Nếu p trỏ cuối danhsách Thêm k vào cuối danhsách l *Trường hợp 2: (p khác trỏ cuối) B1: ... - - Đầu vào: DSLK đơn l Kết quả: Trả số lượng phầntửdanhsách Giải thuật: B1: d=0 p trỏ vào đầu danhsách B2: Nếu p = NULL trả d Kết thúc B3: d=d +1 B4: p trỏ đến phầntử kế tiếp, quay lại...