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

Lecture 08 linked lists(con ) tài liệu Kỹ thuật Lập trình

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 (424.54 KB, 62 trang )

Lecture 12 – Linked Lists
12.1. Khái niệm về danh sách
12.2. Các phép toán trên danh sách
12.3. Cài đặt danh sách sử dụng mảng
12.4. Danh sách liên kết đơn
12.5. Danh sách liên kết dạng vòng
12.6. Danh sách liên kết kép
12.7. Ứng dụng của danh sách liên kết
12.8. Bài tập thực hành


Lecture 12 – Linked Lists
12.1. Khái niệm về danh sách
12.2. Các phép toán trên danh sách
12.3. Cài đặt danh sách sử dụng mảng
12.4. Danh sách liên kết đơn
12.5. Danh sách liên kết dạng vòng
12.6. Danh sách liên kết kép
12.7. Ứng dụng của danh sách liên kết
12.8. Bài tập thực hành




 !
"#$%&#"'(!)#*+!,
+-#*"#$!()./!0#1
12.1. Khái niệm về danh sách(list)
Ngăn xếp
 ậ



Hàng đợi
 ậ

Danh sách (list)

 ậ



12.1. Khái niệm về danh sách(list)

Cài đặt:

$2#$#345#6
7

8
111

%&#9:1

;.<:#+5!=empty list>1

;.?:!#
7
0@A=<rst>%B# !=last>1

/#A2#$#3/C##D.1



Lecture 12 – Linked Lists
12.1. Khái niệm về danh sách
12.2. Các phép toán trên danh sách
12.3. Cài đặt danh sách sử dụng mảng
12.4. Danh sách liên kết đơn
12.5. Danh sách liên kết dạng vòng
12.6. Danh sách liên kết kép
12.7. Ứng dụng của danh sách liên kết
12.8. Bài tập thực hành


12.2. Các phép toán trên danh sách

Các phép toán cơ bản trên danh sách:

#E+F#=##@%E>6A%%G+H+AI

EEEJ+F#=##@>6)K%G+H+4&+AI

"EL/F#=#>6+5!M"N#I


12.2. Các phép toán trên danh sách

Các hàm bổ trợ:

#L/F#=#>6"#$++5!I

E+F#=#%E>60G%G#!%E0@A+!#I


+#F#=#>6#+I

+F#=#>6O).I

Chú ý:  /%"#$#0M$)P/!!%Q"1


Lecture 12 – Linked Lists
12.1. Khái niệm về danh sách
12.2. Các phép toán trên danh sách
12.3. Cài đặt danh sách sử dụng mảng
12.4. Danh sách liên kết đơn
12.5. Danh sách liên kết dạng vòng
12.6. Danh sách liên kết kép
12.7. Ứng dụng của danh sách liên kết
12.8. Bài tập thực hành



Khai báo (trên ngôn ngữ C) danh sách sử dụng mảng:
RESETUVWXYL7:: ZZ[#2"H\B#0]^!I
/EE_#LEE/EI ZZ[#2"#$#* !I
/EE_+`
LEE/ELEEaTUVWXYLbIZZ^!'!0$c'dI
#I ZZ2#.0$c'dBI
eW#!EF#I
111
W#!EF##I
12.3. Cài đặt danh sách sử dụng mảng


 





Một số thao tác cần cài đặt khi làm việc với danh sách:

%##E+F#=W#!EF#f###@LEE/E%E>I

%#EEEJ+F#=W#!EF#f###@>I

%#"EL/F#=W#!EF#f#>I

##L/F#=W#!EF#f#>I

##JF#=W#!EF#f#>I
12.3. Cài đặt danh sách sử dụng mảng

 





Khởi tạo danh sách: "EL/F#=W#!EF#f#>6
g#.0.!#+G!#"'!a:TUVWXYLh7bI

Kiểm tra danh sách rỗng: #L/F#=W#!EF#f#>6
g#.0.!#+G!#"'!a:TUVWXYLh7bI


Kiểm tra danh sách đầy:#JF#=W#!EF#f#>6
12.3. Cài đặt danh sách sử dụng mảng







Khởi tạo danh sách: "EL/F#=W#!EF#f#>6
g#.0.!#+G!#"'!a:TUVWXYLh7bI

Kiểm tra danh sách rỗng: #L/F#=W#!EF#f#>6
g#.0.!#+G!#"'!a:TUVWXYLh7bI

Kiểm tra danh sách đầy:#JF#=W#!EF#f#>6
<TUVWXYLh7I
12.3. Cài đặt danh sách sử dụng mảng
 




Thêm một phần tử vào đầu ds:
#E+F#=f#7%>I
71 [#$+'!0//"!I
81 iG/$%DB#'!0#7&I
j1 k!#+GA%&0@A'!I
l1 (!2#.0.I

12.3. Cài đặt danh sách sử dụng mảng








Thêm một phần tử vào cuối ds:
#E+F#=f#m7%>I
71 [#$+'!0//"!I
81 (!2#.0.I
j1 k!#+G&#%&I
12.3. Cài đặt danh sách sử dụng mảng







Thêm một phần tử vào vị trí p trên ds:
#E+F#=f#%>I
71 [#$+'!0//"!I
81 [#$+n*%G+H04&#%I
j1 iG/$+!"'!ah7b%DHB#'!7&I
l1 (!2#.0.I
o1 k!#+G&#%&I
12.3. Cài đặt danh sách sử dụng mảng









Xóa phần tử ở đầu danh sách:
EEEJ+F#=f#7>I
71 [#$+'!+5!/"!I
81 F/!#+G0@AI
j1 iG/$p#%D0'!I
l1 k#'2#.0.I
12.3. Cài đặt danh sách sử dụng mảng







Xóa phần tử ở cuối danh sách:
EEEJ+F#=f#m7>I
71 [#$+'!+5!/"!I
81 F/!#+GB#I
j1 k#'2#.0.I
12.3. Cài đặt danh sách sử dụng mảng








Xóa phần tử ở vị trí cho trước:
EEEJ+F#=f#>I
71 [#$+'!+5!/"!I
81 [#$+n*%G+H)I
j1 iG/$+!"'!ab%D0'!7&I
l1 k#'2#.0.I
12.3. Cài đặt danh sách sử dụng mảng







12.3. Cài đặt danh sách sử dụng mảng

Đánh giá về phương pháp cài đặt: i^!'!044+q/#A@.
+!2&A^!'!0$c'dB440#$6

Ưu điểm:

T0^!2&B#4/*0B#I

r#*+/)0.!%3!!csB'!I


Nhược điểm:

r#*A2&""(B#HG/$'!I

t#"#q!H2&%"!^!0.I


12.3. Cài đặt danh sách sử dụng mảng

Giải pháp: #0M2u!+vliên kết động6

t$"O^40#$+A$^!#A".0!4+-#*/.I

#A".0! !0."#"H4&42#.#w#0#$2#AG
4,!+"!="!$>)0G"H4&+4&I

$0G!x2y-0#A".0%&#0q+4&0I

;4%/5#]2!C!@4+%#A".%&#"I

[#0$N+!Mz##w#0#$/4,!+1


Lecture 12 – Linked Lists
12.1. Khái niệm về danh sách
12.2. Các phép toán trên danh sách
12.3. Cài đặt danh sách sử dụng mảng
12.4. Danh sách liên kết đơn
12.5. Danh sách liên kết dạng vòng
12.6. Danh sách liên kết kép

12.7. Ứng dụng của danh sách liên kết
12.8. Bài tập thực hành


12.4. Danh sách liên kết đơn

Danh sách liên kết đơn +-#*2!C-5#-2!C6

i#*4+I

F#A".0.-@.E1
Link
Data
Node
!"#
60
7:::
800 45
{::
90 55
|:
0
NULL



Khái niệm: i#A".0,+-
#*2!C-5#-2
!C6


i#*4+I

F#A".+v0.-@.E1

[#2+!}6
/EE_#i/EIZZ"#$#* !+!

/EE_+;E`
i/E IZZ i ! 0$ y  #* "#$
i/E
;EfE)I ZZ}+v&#&;E".
@.
eI
12.4. Danh sách liên kết đơn
   
$%
&' ( !)*"ị ủ
+)! , ! /01!  ỏ ử
/")




t$c'd#A".0,!4w!
6

<rst+vs0.0@A
#A".1

~B#=last>#A".%&#

;•FF1

[#2+!}6
/EE_#i/EIZZ"#$#* !+!

/EE_+;E`
i/E IZZ i ! 0$ y  #* "#$
i/E
;EfE)I ZZ}+v&#&;E".
@.
eI
12.4. Danh sách liên kết đơn
   
$%



12.4. Danh sách liên kết đơn

Các thao tác cơ bản khi làm việc với danh sách động:

[N#I

#E+UJ#+=f#%>6AE%0I

#E+U~=f#%>6}€E%I

#E+UF=f#%>6AE%B#I

EEEUJ#+=f#>6VEK0I


EEEUF=f#>6VENB#I

EEEU~=f#>6VE+!1

#L/F#=f#>6[#$++5!I

"L/F#=f#>6F+5!I

E+F#=f#%>6!#+G+!1



×