Tải bản đầy đủ (.pdf) (10 trang)

Bài giảng Ngôn ngữ lập trình: Bài 10 - Lê Nguyễn Tuấn Thành - Trường Đại Học Quốc Tế Hồng Bàng

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 (300.62 KB, 10 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>N</b>

<b>GƠN</b>

<b>NG</b>

<b>Ữ</b>

<b>L</b>

<b>Ậ</b>

<b>P</b>

<b>TRÌNH</b>



<b>Bài 10: </b>



<b>Các Kiểu Dữ Liệu Trừu Tượng: </b>


<b>Danh sách liên kết, </b>



<b>Ngăn xếp, Hàng đợi </b>



<b>Giảng viên: Lê Nguyễn Tuấn Thành </b>
<b>Email: </b>


<b>Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT </b>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

N

I

DUNG



1.

Các nút (Nodes) và Danh sách liên k

ế

t



1. Tạo, tìm kiếm


2.

ng d

ng danh sách liên k

ế

t


1. Ngăn xếp (Stacks),


2. Hàng đợi (Queue)


3. Lớp bạn


3.

Iterators



1. Con trỏ như iterators



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

G

I

I

THI

U



Danh sách liên k

ế

t



 Được xây dựng sử dụng con trỏ


 Tăng giảm kích thước trong thời gian chạy


Cây cũng s

d

ng con tr



Con tr

là x

ươ

ng s

ng c

a nh

ng c

u trúc này



 Sử dụng biến động


Th

ư

vi

n m

u chu

n (STL)



 Có những phiên bản định nghĩa sẵn của một vài cấu


trúc


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

C

ÁCH

TI

P

C

N



Có 3 cách đ

x

lý nh

ng c

u trúc d

li

u này



1. Cách tiếp cận C-style: sử dụng hàm và cấu trúc toàn


cục với mọi thứ đều public


2. Sử dụng lớp với các biến thành viên private và các



hàm accessor – mutator


3. Sử dụng lớp bạn


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

N

ÚT

DANH

SÁCH

LIÊN

K

T



Danh sách liên k

ế

t



 Một ví dụ đơn giản của “cấu trúc dữ liệu động”
 Bao gồm nhiều nút


M

i nút là m

t bi

ế

n ki

u c

u trúc ho

c đ

i t

ượ

ng



c

a l

p (có th

t

o t

đ

ng v

i l

nh new)



 Nút cũng bao gồm con trỏ trỏ tới những nút khác
 Cung cấp “sự liên kết”


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6></div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Đ

NH

NGHĨA

NÚT



<i>struct ListNode </i>



<i>{ </i>



<i>string item; </i>


<i>int count; </i>



<i>ListNode *link; </i>


<i>}; </i>




<i>typedef ListNode* ListNodePtr; </i>



Chú ý s

tu

n hoàn (circularity)



</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

C

ON

TR

HEAD



Đ

i t

ượ

ng v

i nhãn “head” không ph

i là m

t nút:



<i>ListNodePtr head; </i>



 Là một con trỏ đơn giản tới một nút
 Chỉ tới nút đầu tiên trong danh sách


Head đ

ượ

c s

d

ng đ

l

ư

u tr

v

trí đ

u tiên trong



danh sách



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

V

Í

D

V

TRUY

C

P

NÚT



<i>(*head).count = 12; </i>



 Đặt biến thành viên <i>count</i> của nút trỏ bởi con trỏ head


bằng 12


Toán t

alternate

->



 Được gọi là toán tử mũi tên (<i>arrow operator</i>)


 Kí hiệu viết tắt là sự kết hợp của hai toán tử * và .


 Viết lại câu lệnh trên bằng: <i>head->count=12; </i>


<i>cin>>head->item</i>

:



 Gắn chuỗi nhập vào cho biến thành viên <i>item </i>


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

D

U

HI

U

K

T

THÚC

(

END

MARKERS

)



S

d

ng NULL cho con tr

nút



 Được xem như “<i>lính canh</i>” (sentinel) cho các nút
 Chỉ định rằng khơng cịn liên kết sau nút này


Cung c

p d

u hi

u k

ế

t thúc t

ươ

ng t

nh

ư

cách



chúng ta s

d

ng m

ng đ

ượ

c l

p đ

y m

t ph

n



</div>

<!--links-->

×