Tải bản đầy đủ (.ppt) (62 trang)

danh sách liên kết đơn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (283.32 KB, 62 trang )


ngtuananh_vn@yahoo
.com
1
Chương 5
KHOA CNTT, BM: TIN HỌC TRẮC ĐỊA,
Nguyễn Tuấn Anh,
ĐẠI HỌC MỎ - ĐỊA CHẤT
DANH SÁCH LIÊN KẾT
Single Linked List

ngtuananh_vn@yahoo
.com
2
Danh sách liên kết đơn

ngtuananh_vn@yahoo
.com
3
Thêm vào một danh sách liên tục(mảng)
insert(3, ‘z’)
da b c
0 1 2 3 4 5 6 7 8 9
e f g hd e f g h
z
count=8count=9
Lý do sử dụng ds liên kết

ngtuananh_vn@yahoo
.com
4


X=d
remove(3, x)
da b c
0 1 2 3 4 5 6 7 8 9
e f g hd e f g h
count=8
count=7
Xóa một phần tử ra khỏi mảng

ngtuananh_vn@yahoo
.com
5
infor Next
Dữ liệu
Trường liên kết
L
3
Next
7
Next
8
DANH SÁCH LIÊN KẾT ĐƠN

ngtuananh_vn@yahoo
.com
6

ngtuananh_vn@yahoo
.com
7

ĐỊNH NGHĨA 1 NÚT và KHAI BÁO CON TRỎ L TRỎ ĐẾN ĐẦU
DANH SÁCH
typedef struct Node{
Data infor;
Node * next;
};
Type Node = record
ht:string[20];
ns: integer;
Node ^next;
End;
Khai báo một con trỏ L
Node * L;

ngtuananh_vn@yahoo
.com
8
Ví dụ tạo danh sách liên kết đơn các
số nguyên
typedef struct Node {
int infor;
Node * next;
};
Node *L;

ngtuananh_vn@yahoo
.com
9
Ví dụ tạo danh sách liên kết đơn các
sinh viên

typedef struct sinhvien {
char ht[25];
int namsinh;
Node * next;
};
Sinhvien *L;

ngtuananh_vn@yahoo
.com
10
L
infor Next
infor Next

infor
F
infor Next
infor Next

infor
Dạng tổng quát dùng một con trỏ
L
Dạng tổng quát dùng 2 con trỏ F và L
F: First L: Last
infor Next
Dữ liệu Trường liên kết

ngtuananh_vn@yahoo
.com
11

DSLKDON 1 CON TRỎ
infor Next
infor Next

infor
Dạng tổng quát dùng 1 con trỏ L
L
1
4 3
L

ngtuananh_vn@yahoo
.com
12
Các phép toán trên DSLK đơn
1. TẠO DANH SÁCH RỖNG
2. THÊM MỘT PHẦN TỬ VÀO CUỐI DANH SÁCH
3. THÊM MỘT PHẦN TỬ SAU MỘT PHẦN TỬ KHÁC
4. XÓA MỘT PHẦN TỬ RA KHỎI DANH SÁCH
5. GHÉP NỐI 2 DSLK ĐƠN THÀNH MỘT DSLK ĐƠN.

ngtuananh_vn@yahoo
.com
13
1. TẠO DANH SÁCH RỖNG

Procedure MakeNull( L )
L = Nil;
L
NIL


ngtuananh_vn@yahoo
.com
14
2. THÊM MỘT PHẦN TỬ VÀO CUỐI DANH SÁCH
PROCEDURE INSERT(L,X);

Ví dụ ta muốn thêm một phần tử X = 10 vào
cuối danh sách.
1
4 3
L
Bước 1.
New (P);
P->infor = X;
P->Next = NIL
q = L
10

ngtuananh_vn@yahoo
.com
15
2. THÊM MỘT PHẦN TỬ VÀO CUỐI
DANH SÁCH

Ví dụ ta muốn thêm một phần tử X = 10 vào
cuối danh sách.
1
4 3
L

Bước 1.
q
New (P);
P->infor = X;
P->Next = NIL
10

ngtuananh_vn@yahoo
.com
16
2. THÊM MỘT PHẦN TỬ VÀO CUỐI
DANH SÁCH

Ví dụ ta muốn thêm một phần tử X = 10 vào
cuối danh sách.
1
4 3
L
Bước 1.
q
New (P);
P->infor = X;
P->Next = NIL
10

ngtuananh_vn@yahoo
.com
17
1
4 3

L
10
DANH SÁCH SAU KHI CHÈN

ngtuananh_vn@yahoo
.com
18
3. THÊM MỘT PHẦN TỬ SAU MỘT PHẦN TỬ KHÁC
PROCEDURE INSERTAFTER(L,M,X)
CHÈN X SAU NÚT CÓ M.
10
L
M
TH 1. NÚT M ≡L
Bước 2
Bước 1
12
P

ngtuananh_vn@yahoo
.com
19
3. THÊM MỘT PHẦN TỬ SAU MỘT PHẦN TỬ KHÁC
PROCEDURE INSERTAFTER(L,M,X)
CHÈN X SAU NÚT CÓ M.
10
L
M
TH 2. CHÈN X VÀO CUỐI
Bước 2

Bước 1
12
P

ngtuananh_vn@yahoo
.com
20
3. THÊM MỘT PHẦN TỬ SAU MỘT PHẦN TỬ KHÁC
PROCEDURE INSERTAFTER(L,M,X)
CHÈN X SAU NÚT CÓ M.
1
4 3
10
L
M
Bước1
Bước 2
12




New(p)

ngtuananh_vn@yahoo
.com
21
DANH SÁCH SAU KHI THÊM NÚT MỚI X=12
1
4 3

10
L
12

ngtuananh_vn@yahoo
.com
22
4. LOẠI BỎ MỘT NÚT RA KHỎI DSLK ĐƠN
PROCEDURE DELETE ( L, M )
Trường hợp 1.
DANH SÁCH RỖNG
KẾT THÚC

ngtuananh_vn@yahoo
.com
23
Trường hợp 2. Nút M trùng với nút đầu danh sách
4. LOẠI BỎ MỘT NÚT RA KHỎI DSLK ĐƠN
PROCEDURE DELETE ( L, M )
1
3
10
L
M ≡ L
Bước 1.
Bước 2.
Xóa M

ngtuananh_vn@yahoo
.com

24
Trường hợp 2. Nút M trùng với nút đầu danh sách
4. LOẠI BỎ MỘT NÚT RA KHỎI DSLK ĐƠN
PROCEDURE DELETE ( L, M )
3
10
L

ngtuananh_vn@yahoo
.com
25
Trường hợp 3. Nút M=12 nằm ở giữa danh sách
4. LOẠI BỎ MỘT NÚT RA KHỎI DSLK ĐƠN
PROCEDURE DELETE ( L, M )
1
4
3
10
L
12
Bước 1. Tìm đến nút đứng trước M
P
M
q

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×