danh sách liên kết Trong bài này chúng ta sẽ tìm hiểu 2 phần chính: Danh sách liên kết cài đặt bằng mảng Danh sách liên kết cài đặt bằng con trỏ + Danh sách liên kết đơn + Danh sách liên kết kép Trong mỗi phần chúng ta sẽ tìm hiểu các vấn đề cơ bản sau: Cài đặt danh sách (Khai báo) Khởi tạo danh sách rỗng Kiểm tra danh sách rỗng (danh sách đầy khi cài bằng mảng) Chèn phần tử vào đầu danh sách Chèn phần tử vào vị trí thứ k trong danh sách 1 Advanced nguyenvanquan7826
Trang 1Trang chủ Forum Thành viên Freelancer Việt Nam Kiếm tiền onlineDiễn đàn Tin nhắn riêng Hỏi Đáp Lịch Cộng đồng Thiết lập nhanh Liên kết Nhanh
Thoát tominhphong
Diễn đàn Lập trình ứng dụng C/C++ Tài liệu, Thủ thuật
+ Trả lời Chủ đề Kết quả 1 đến 10 của 13 trang 1 của 2 1 2 cuối
Công cụ Chủ đề Đánh giá Chủ đề Hiển thị 03092013, 08:42 PM
[C/C++]Bài 10 – Danh sách liên kết
Bài 10 – Danh sách liên
kếtTrong bài này chúng ta sẽ tìm hiểu 2
Trang 2Để khai báo danh sách này ta cần có 1mảng có số phần tử tối đa là N có kiểu
dữ liệu là item (item này là kiểu dữ liệutổng quan, khi làm nó sẽ là kiểu int, floathay kiểu cấu trúc sinh viên). Cần thêm 1biến size thể hiện số phần tử hiện có củadanh sách
Cụ thể như sau:
1.2/ Khởi tạo danh sách rỗng
Danh sách của ta rỗng khi số phần tửtrong danh sách bằng 0. Vì vậy chỉ cầnkhai báo trường size của ta bằng 0 làđược
Trang 3Để kiểm tra danh sách rỗng hay đầy tachỉ việc xem số phần tử của danh sách
có bằng 0 hay không (rỗng) và có bằng
N hay không (đầy)
1.4/ Chèn phần tử vào vị trí k trongdanh sách
Trước khi chèn phần tử vào trong danhsách chúng ta nên xây dựng 1 hàm trả
về dữ liệu (nhập vào dữ liệu) của phần
tử cần chèn đó
Sau đó tiến hành chèn:
Trong quá trình chèn chúng ta cần kiểmtra xem danh sách đầy chưa, nhập vị trí
k cần chèn và kiểm tra nó, nếu phù hợp(0<k<=N) thì sẽ tiến hành chèn
Để chèn được phần tử x vào vị trí k trongdanh sách (trong mảng) ta cần dùng 1vòng for để di chuyển các phần tử từ vịtrí k về phía cuối mảng, sau đó chèn xvào vị trí k. Cuối cùng ta tăng size lên 1đơn vị
Trang 4Nhập như bình thường với mảng
Trang 5Ta duyệt từ đầu đến cuối danh sách nếu
có giá trị x thì đưa ra vị trí của nó
1.7/ Xóa phần tử thứ k trong danhsách
Trước khi xóa ta phải kiểm tra xem danhsách có rỗng không. Nếu không rỗng tanhập vào vị trí cần xóa và kiểm tra (phùhợp nếu 0<k<=N)
Ta dùng vòng for chạy đến vị trí thứ k,sau đó dồn các phần tử từ k+1 về trước
1 đơn vị. tuy nhiên ta cần lưu lại giá trịcủa phần tử xóa trước khi xóa để giữ lạithông tin nếu ta cần dùng đến nó. Cuốicùng là giảm size xuống 1 đơn vị
Trang 6Để xóa phần tử có nội dung x trong danhsách ta tiến hành tìm phần tử x trướcbằng hàm search sau đó giá trị trả về là
vị trí của x, ta tiếp tục sử dụng hàmdel_k để xóa phần tử ở vị trí mà ta tìmđược
Vậy là chúng ta đã xây dựng xong các
Trang 7sẽ xen lẫn chút cấu trúc của C++ trongđó
Một số vấn đề ta cần làm trong DSLK:
2.1 Giống như trong phần danh sáchliên kết xây dựng bởi mảng, bây giờ
ta sẽ cài đặt danh sách:
Danh sách liên kết có thể được mô tảnhư sau:
2.2 Khởi tạo danh sách rỗng
Trong các bài trước để có thể thay đổiđược giá trị của đối mà ta truyền vàohàm ta thưòng dùng biến con trỏ vàtrong lời gọi hàm ta cần có & trước biếntuy nhiên khi chúng ta sử dụng cáchtruyền địa chỉ ngay khi khởi tạo hàm thìtrong lời gọi hàm ta tiên hành truyềnbiến bình thưòng mà không phải lấy địa
Trang 8(Đây là một cách truyền địa chỉ cho biếntrong hàm ở C++.)
2.3 Kiểm tra danh sách rỗng haykhông
Cái này khỏi giải thích nhiều:
2.4 Tính độ dài danh sách
Ta dùng 1 Node để duyệt từ đầu đếncuối, vừa duyệt vừa đếm
2.5 Tạo 1 Node trong danh sách
Việc tạo 1 Node chứa thông tin trongdanh sách sẽ giúp ta dễ dàng chèn, xóa
và quản lý danh sách hơn. Trước tiên ta
sẽ phải cấp phát vùng nhớ cho Node vàsau đó gán Data vào là ok
2.6 Chèn Node P vào vị trí đầu tiên
Để chèn P vào đầu danh sách trước tiên
ta cho P trỏ đến L, sau đó chỉ việc cho Ltrỏ lại về P là ok
Trang 9Trước tiên ta kiểm tra vị trí chèn có hợp
lệ không, nếu hợp lệ kiểm tra tiếp chènvào vị trí 1 hay k >1 . Với k >1 ta thựchiện duyệt bằng Node Q đến vị trí k1sau đó cho P>Next trỏ đến Node Q
>Next, tiếp đến cho Q>Next trỏ đến P
Trang 10Ta duyệt danh sách cho đến khi tìm thấyhoặc kết thúc và trả về vị trí nếu tìmthấy, ngược lại trả về 0
2.9 Xóa phần tử ở vị trí đầu tiên
Trước tiên ta lưu giá trị của phần tử đầutiên vào biến x, sau đó tiền hành cho Ltrỏ đến L>Next
Trang 11Dùng P duyệt đến vị trí k1 và tiến hànhcho P>Next trỏ đến phần tư kế tiếp k
mà bỏ qua k. Lưu ý trong hình mìnhquên không lưu lại giá trị cần xóa tuynhiên các bạn cần lưu lại như khi xóa ở
vị trí đầu tiên
2.11 Xóa phần tử có giá trị x
Đon giản là ta tìm x trong danh sách
Trang 12Đến đây coi như đã hoàn thiện phầndanh sách liên kết đơn.
Các bạn có thể tham khảo code hoànchỉnh tại đây: http://ideone.com/BMPAja
3. Danh sách liên kết kép
Danh sách liên kết kép cũng là một dạngdanh sách liên kết nhưng mỗi phần tửliên kết với phần tử đứng trước và sau nótrong danh sách
3.1 Cài đặt danh sách:
Cấu trúc của 1 Node trong danh sách liênkết kép tương đối giống với DSLKD
nhưng có thêm một con trỏ trỏ về Nodetrước nó
Cấu trúc của DSLKK không như DSLKD
có 1 Con trỏ trỏ đến đầu DS, nhưngDSLKK ngoài con trỏ trỏ đến đầu danhsách còn có thêm 1 con trỏ trỏ đến Node
Trang 13Để tìm độ dài của DSLKK ta hoàn toàn cóthể làm giống như DSLKD, tức dùng contrỏ duyệt từ đầu đến cuối, nhưng trongDSLKK ta có thể dùng 2 con trỏ ở đầu vàcuối để đếm
3.5 Tạo 1 Node P chứa thông tin
Trang 143.7 Chèn phần tử vào cuối danh sáchtương tự như đầu danh sách
3.8 Chèn phần tử vào vị trí k
Trước khi chèn vào vị trí k cần kiểm tra
vị trí k có phù hợp, có phải đầu danhsách hay cuối danh sách. Nếu chèn vàogiữa danh sách ta thực hiện theo 4 bước
Trang 153.9 Xóa phần tử đầu, cuối danh sách
Trang 16Trước khi xóa ở vị trí k cần kiểm tra vị trí
k có phù hợp, có phải đầu danh sách haycuối danh sách hay ở giữa
3.11 Tìm phần tử x trong DS
Trang 18bacuongcomputer (03102013),dtafe (03122013),hai.leader94 (0314
2013),kaka747 (07102013),mungluom (03102013),SolitaryWolf (0318
VIETSOURCE.NET NƠI ĐAM MÊ BẮT ĐẦUDIỄN ĐÀN CHIA SẺ KIẾN THỨC LẬP TRÌNH, MÃ NGUỒNHọc Lập Trình | Video Lập Trình Web HTML CSS | Video Lap Trinh C | Video Hoc LapTrinh | Video Hoc Lap Trinh Pascal | Video Hoc Lap Trinh PHP | Lap Trinh Web | LapTrinh Ung Dung | Phan Mem Mien Phi | BBPhim.Com| Phim Hanh Dong| Phim Kinh
Trang 19VIETSOURCE.NET NƠI ĐAM MÊ BẮT ĐẦUDIỄN ĐÀN CHIA SẺ KIẾN THỨC LẬP TRÌNH, MÃ NGUỒNHọc Lập Trình | Video Lập Trình Web HTML CSS | Video Lap Trinh C | Video Hoc LapTrinh | Video Hoc Lap Trinh Pascal | Video Hoc Lap Trinh PHP | Lap Trinh Web | LapTrinh Ung Dung | Phan Mem Mien Phi | BBPhim.Com| Phim Hanh Dong| Phim Kinh
Đã và đang.
VIETSOURCE.NET NƠI ĐAM MÊ BẮT ĐẦUDIỄN ĐÀN CHIA SẺ KIẾN THỨC LẬP TRÌNH, MÃ NGUỒNHọc Lập Trình | Video Lập Trình Web HTML CSS | Video Lap Trinh C | Video Hoc LapTrinh | Video Hoc Lap Trinh Pascal | Video Hoc Lap Trinh PHP | Lap Trinh Web | LapTrinh Ung Dung | Phan Mem Mien Phi | BBPhim.Com| Phim Hanh Dong| Phim Kinh
Di|
#4Advanced
nguyenvanquan7826
Trang 20Gửi bởi StarrySky
Phần này nhiều ác. nhưng phần cài đặt DSLK bằng con trỏ chưa có hả anh
Trang 21VIETSOURCE.NET NƠI ĐAM MÊ BẮT ĐẦUDIỄN ĐÀN CHIA SẺ KIẾN THỨC LẬP TRÌNH, MÃ NGUỒNHọc Lập Trình | Video Lập Trình Web HTML CSS | Video Lap Trinh C | Video Hoc LapTrinh | Video Hoc Lap Trinh Pascal | Video Hoc Lap Trinh PHP | Lap Trinh Web | LapTrinh Ung Dung | Phan Mem Mien Phi | BBPhim.Com| Phim Hanh Dong| Phim Kinh
Trang 22VIETSOURCE.NET NƠI ĐAM MÊ BẮT ĐẦUDIỄN ĐÀN CHIA SẺ KIẾN THỨC LẬP TRÌNH, MÃ NGUỒNHọc Lập Trình | Video Lập Trình Web HTML CSS | Video Lap Trinh C | Video Hoc LapTrinh | Video Hoc Lap Trinh Pascal | Video Hoc Lap Trinh PHP | Lap Trinh Web | LapTrinh Ung Dung | Phan Mem Mien Phi | BBPhim.Com| Phim Hanh Dong| Phim Kinh
bài viết của a rất hay. tks a rất nhiều
VIETSOURCE.NET NƠI ĐAM MÊ BẮT ĐẦUDIỄN ĐÀN CHIA SẺ KIẾN THỨC LẬP TRÌNH, MÃ NGUỒN
#9
Beginner
hungthinh1806
Trang 23Học Lập Trình | Video Lập Trình Web HTML CSS | Video Lap Trinh C | Video Hoc LapTrinh | Video Hoc Lap Trinh Pascal | Video Hoc Lap Trinh PHP | Lap Trinh Web | LapTrinh Ung Dung | Phan Mem Mien Phi | BBPhim.Com| Phim Hanh Dong| Phim Kinh
Chọn nhanh Tài liệu, Thủ thuật Lên trên
Tag của Chủ đề này
Trang 24Video Tutorialcăn ho ssg tower quy trình seo dịch vụ seo tổng thể dịch vụ seo từ khóa diễn đàn học lập trình web
Liên kếtchè thái nguyên Haivl
Dich vu SEO
Liên kếtcông ty seo Việc làm Thái Nguyên Tuyển sinh 2014 Thông tin kinh tế đào tạo seo Dao tao SEO
Textlink: thiet ke webxe chevrolet cruze, dao tao seo,
Tag của Chủ đề nàyNone
Bạn Có thể Gửi Chủ đềmới
Bạn Có thể Gửi trả lờiBạn Có thể Gửi file đínhkèm
Bạn Có thể Sửa bài viếtcủa mình
Quyền viết bài
BB code đang BậtSmilies đang Bật[IMG] code đangBật
[VIDEO] code isBật
HTML code đangTắt
Nội quy Quyđịnh
VSNet Version 2 Việt Nam Powered by vBulletin® Version 4.2.0IP hiện tại của bạn:
Liên lạc với chúng tôi Trang chủ Lưu trữ Lên trên
© 2012 thuộc về VSNet
Cộng đồng mã nguồn Việt
Nam