...
ngtuananh_vn@yahoo
.com
8
Ví dụ tạo danhsáchliênkếtđơncc
số nguyên
typedef struct Node {
int infor;
Node * next;
};
Node *L;
ngtuananh_vn@yahoo
.com
2
Danh sáchliênkết đơn
ngtuananh_vn@yahoo
.com
35
3. ... )
1
3
10
L
M ≡ L
Bư c 1.
Bư c 2.
Xóa M
ngtuananh_vn@yahoo
.com
1
Chương 5
KHOA CNTT, BM: TIN H C TR C ĐỊA,
Nguyễn Tuấn Anh, ngtuananh_vn@yahoo.com
ĐẠI H C MỎ - ĐỊA CHẤT
DANH SÁCHLIÊN KẾT
Single Linked ... tạo danhsáchliênkếtđơncc
sinh viên
typedef struct sinhvien {
char ht[25];
int namsinh;
Node * next;
};
Sinhvien *L;
ngtuananh_vn@yahoo
.com
39
2. Phép thêm một phần tử vào cuối...
... loại.
Tùy c ch liênkết giữa cc phần tử, danhsáchliênkết gồm c nhiều loại kh c
nhau:
- Danhsáchliênkết đơn: mỗi phần tử liênkết với phần tử đứng sau nó trongdanh
sách.
- Danhsáchliênkết ... phần tử liênkết với cc phần tử đứng trư c và
sau nó trongdanh sách.
- Danhsáchliênkết vòng: phần tử cuối danhsáchliênkết với phần tử đầu danh
sách.
1.3. Danhsáchliênkết đơn.
1.3.1. ... đơn.
1.3.1. Khái niệm.
Danh sáchliênkếtđơn là một c u tr c lưu trữ trong đó cc phần tử c a danhsách
không c định, cc phần tử trongdanhsách không thể truy c p tr c tiếp. Muốn truy
c p bất kỳ phần...
... }
}
Bài 3: cho danhsách sinh viên. mỗi sinh viên gồm cc thông tin: MSSV, họ tên, địa chỉ, giới tính và điểm trung bình th c hiện cc yêu c u sau:
1: Nhập danhsách sinh viên.
2: Xuất danhsách sinh ... cho 2 danhsáchliênkết l1 và l2, gồm cc phần tử là số nguyên, th c hiện cc yêu c u sau:
1: sắpxếp l1 và l2 tắng dần.
2: nối l1 và l2 thành l3 sao cho l3 tăng dần.
return d;
}
NODE* TimChanDau(LIST ... MSSV khỏi danh sách.
4: Sắpxếpdanhsách tăng dần theo điểm trung bình.
5: Liệt kê cc sinh viên c điểm trung bình >= 5.
6: Đếm số lượng sinh viên nam.
7: C p nhật điểm trung bình c a 1 SV...
... phần tử c khóa x vào danh sách
Hủy một phần tử trongdanh sách
Duyệt danh sách
Sắp xếpdanhsáchliênkết đơn
C u tr c dữ liệu và thuật giải
C U TR C DỮ LIỆU VÀ GIẢI THUẬT 1
Click To Edit ... hàm delete.
C u tr c dữ liệu và thuật giải
C U TR C DỮ LIỆU VÀ GIẢI THUẬT 1
Click To Edit Master Title Style
Hủy danhsáchliênkết đơn
Bư c 1:
Trong khi (danh sách chưa hết) th c hiện
•
B11: ... p
C u tr c dữ liệu và thuật giải
C U TR C DỮ LIỆU VÀ GIẢI THUẬT 1
Click To Edit Master Title Style
Khởi tạo danhsáchliên kết
Địa chỉ c a nút đầu tiên, địa chỉ c a nút cuối c ng
đều không c
void...
...
Ngư c lại:
B1: pTruoc là con trỏ đứng trư c con trỏ cuối c a danhsách
B2: Cho pTruoc trỏ kế tiếp tới NULL
B3: Xóa con trỏ cuối
B4: Gán con trỏ cuối là pTruoc
- C i đặt:
void XoaCuoi(LIST ... minh họa)
- Đầu vào: DSLK đơn l
- Kết quả: DSLK đơn l sau khi hủy (rỗng)
C C THAO T C TRÊN DANH
SÁCH LIÊNKẾTĐƠN C+ +
- C i đặt:
void XoaDau(LIST &l)
{
if(l.pHead!=NULL) ... DSLK đơn l, node p để x c định node c n xóa
- Kết quả: DSLK đơn l sau khi xóa phần tử sau p
- Giải thuật:
*Trường hợp 1: Nếu p là con trỏ cuối thì kết th c
*Trường hợp 2: (p kh c con trỏ cuối)...
... tử trongdanhsách để xử lý, chẳng hạn xử lý:
Xuất cc phần tử trongdanh sách
Đếm cc phần tử trongdanh sách
Tính tổng cc phần tử trongdanh sách
Tìm tất ccc phần tử danhsách thoả ...
quả
4
Chương 6: Danhsáchliên kết
DSLK đơn – Cc thao t c cơ sở
Duyệt danh sách
Bư c 1: p = pHead; //Cho p trỏ đến phần tử đầu danh sách
Bư c 2: Trong khi (chưa hết danh sách) th c hiện:
B2.1 ... Danhsáchliên kết
DSLK đơn – Cc thao t c cơ sở
Xóa một node c a danh sách
Xóa node đầu danh sách
Xóa node sau node q trongdanh sách
Xóa node c khoá k
50
Chương 6: Danhsáchliên kết
DSLK...
... tr c dữ liệu tuyến tính.
•
Dễ dàng thêm ho c xóa cc phần tử trongdanhsách mà không c n phải c p phát ho c tổ ch c lại trật
tự c a mảng.
•
C p phát bộ nhớ động
Như c điểm:
•
Một danhsáchliên ... phải duyệt tất ccc phần tử.
Phân loại:
•
Danh sách tuyến tính (Linear list):
•
Danh sách vòng (circular list):
•
Danh sáchliênkết đôi (Double list):
C u tr c:
Data: Thành phần chứa một hay ... tham chiếu (reference) đến nút kế tiếp
trong chuỗi.
Danh sáchliênkết là một trong những c u tr c dữ liệu đơn giản và phổ biến nhất.
(Nguồn: Wikipedia)
Ưu điểm:
•
Cung c p giải pháp để chứa c u...