1. Trang chủ
  2. » Công Nghệ Thông Tin

Cấu trúc dự liệu động ppt

210 947 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 210
Dung lượng 1,55 MB

Nội dung

Ca Ca á á u tru u tru ù ù c d c d ö ö õ lie õ lie ä ä u u ñ ñ o o ä ä ng ng Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 2 Mu Mu ï ï c tiêu c tiêu   Giơ Giơ ù ù i thie i thie ä ä u kha u kha ù ù i nie i nie ä ä m ca m ca á á u tru u tru ù ù c d c d ư ư õ lie õ lie ä ä u u đ đ o o ä ä ng. ng.   Giơ Giơ ù ù i thie i thie ä ä u danh sa u danh sa ù ù ch liên ke ch liên ke á á t: t:   Ca Ca ù ù c kie c kie å å u to u to å å ch ch ứ ứ c d c d ư ư õ lie õ lie ä ä u theo DSLK. u theo DSLK.   Danh sa Danh sa ù ù ch liên ke ch liên ke á á t t đ đ ơn: to ơn: to å å ch ch ứ ứ c, ca c, ca ù ù c thua c thua ä ä t toa t toa ù ù n, n, ứ ứ ng ng du du ï ï ng. ng. Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 3 Kie Kie å å u d u d ư ư õ lie õ lie ä ä u t u t ó ó nh nh   Kha Kha ù ù i nie i nie ä ä m: Mo m: Mo ä ä t so t so á á đ đ o o á á i t i t ư ư ơ ơ ï ï ng d ng d ư ư õ lie õ lie ä ä u không thay thay u không thay thay đ đ o o å å i i đư đư ơ ơ ï ï c k c k í í ch th ch th ư ư ơ ơ ù ù c, ca c, ca á á u tru u tru ù ù c, c, … … trong suo trong suo á á t qua tr t qua tr ì ì nh so nh so á á ng. ng. Ca Ca ù ù c c đ đ o o á á i t i t ư ư ơ ơ ï ï ng d ng d ư ư õ lie õ lie ä ä u thuo u thuo ä ä c nh c nh ư ư õng kie õng kie å å u d u d ư ư õ lie õ lie ä ä u go u go ï ï i la i la ø ø kie kie å å u d u d ư ư õ lie õ lie ä ä u lie u lie ä ä u t u t ó ó nh. nh.   Mo Mo ä ä t so t so á á kie kie å å u d u d ư ư õ lie õ lie ä ä u t u t ó ó nh: ca nh: ca ù ù c ca c ca á á u tru u tru ù ù c d c d ư ư õ lie õ lie ä ä u u đư đư ơ ơ ï ï c xây c xây d d ự ự ng t ng t ừ ừ ca ca ù ù c kie c kie å å u cơ sơ u cơ sơ û û nh nh ư ư : kie : kie å å u th u th ự ự c, kie c, kie å å u nguyên, kie u nguyên, kie å å u u ky ky ù ù t t ự ự hoa hoa ë ë c t c t ừ ừ ca ca ù ù c ca c ca á á u tru u tru ù ù c c đ đ ơn gia ơn gia û û n nh n nh ư ư ma ma å å u tin, ta u tin, ta ä ä p p hơ hơ ï ï p, ma p, ma û û ng ng Ỵ Ỵ Ca Ca ù ù c c đ đ o o á á i t i t ư ư ơ ơ ï ï ng d ng d ư ư õ lie õ lie ä ä u u đư đư ơ ơ ï ï c xa c xa ù ù c c đ đ ònh thuo ònh thuo ä ä c nh c nh ư ư õng kie õng kie å å u u d d ư ư õ lie õ lie ä ä u na u na ø ø y th y th ư ư ơ ơ ø ø ng c ng c ứ ứ ng nga ng nga é é t, go t, go ø ø bo bo ù ù Ỵ Ỵ kho kho ù ù diễn ta diễn ta û û đư đư ơ ơ ï ï c c th th ự ự c te c te á á vo vo á á n sinh n sinh đ đ o o ä ä ng, phong phu ng, phong phu ù ù . . Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 4 V V í í du du ï ï th th ự ự c te c te á á   Mô ta Mô ta û û , qua , qua û û n ly n ly ù ù mo mo ä ä t t đ đ o o á á i t i t ư ư ơ ơ ï ï ng ng ‘ ‘ con ng con ng ư ư ơ ơ ø ø i i ’ ’ ca ca à à n the n the å å hie hie ä ä n n ca ca ù ù c thông tin to c thông tin to á á i thie i thie å å u nh u nh ư ư : :   Ho Ho ï ï tên tên   So So á á CMND CMND   Thông tin ve Thông tin ve à à cha, me cha, me ï ï Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 5 V V í í du du ï ï th th ự ự c te c te á á   Vie Vie ä ä c biễu diễn mo c biễu diễn mo ä ä t t đ đ o o á á i t i t ư ư ơ ơ ï ï ng co ng co ù ù nhie nhie à à u tha u tha ø ø nh pha nh pha à à n thông n thông tin nh tin nh ư ư trên co trên co ù ù the the å å s s ử ử du du ï ï ng kie ng kie å å u ba u ba û û n ghi. Tuy nhiên, ca n ghi. Tuy nhiên, ca à à n n l l ư ư u y u y ù ù cha, me cha, me ï ï cu cu û û a mo a mo ä ä t ng t ng ư ư ơ ơ ø ø i cũng la i cũng la ø ø ca ca ù ù c c đ đ o o á á i t i t ư ư ơ ơ ï ï ng kie ng kie å å u u NGUOI, do va NGUOI, do va ä ä y ve y ve à à nguyên ta nguyên ta é é c ca c ca à à n pha n pha û û i co i co ù ù đ đ ònh ngh ònh ngh ó ó a a nh nh ư ư sau: sau: typedef struct NGUOI{ char Hoten[30]; int So_CMND ; NGUOI Cha,Me; };   Nh Nh ư ư ng vơ ng vơ ù ù i khai ba i khai ba ù ù o trên, ca o trên, ca ù ù c ngôn ng c ngôn ng ư ư õ la õ la ä ä p tr p tr ì ì nh ga nh ga ë ë p kho p kho ù ù khăn trong vie khăn trong vie ä ä c ca c ca ø ø i i đ đ a a ë ë t không v t không v ư ư ơ ơ ï ï t qua t qua đư đư ơ ơ ï ï c nh c nh ư ư xa xa ù ù c c đ đ ònh k ònh k í í ch th ch th ư ư ơ ơ ù ù c cu c cu û û a a đ đ o o á á i t i t ư ư ơ ơ ï ï ng kie ng kie å å u NGUOI ? u NGUOI ? Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 6 CTDL t CTDL t ó ó nh nh – – Mo Mo ä ä t so t so á á ha ha ï ï n che n che á á   Mo Mo ä ä t so t so á á đ đ o o á á i t i t ư ư ơ ơ ï ï ng d ng d ư ư õ lie õ lie ä ä u trong chu ky u trong chu ky ø ø so so á á ng cu ng cu û û a no a no ù ù co co ù ù the the å å thay thay đ đ o o å å i ve i ve à à ca ca á á u tru u tru ù ù c, c, đ đ o o ä ä lơ lơ ù ù n, nh n, nh ư ư danh sa danh sa ù ù ch ca ch ca ù ù c ho c ho ï ï c viên c viên trong mo trong mo ä ä t lơ t lơ ù ù p ho p ho ï ï c co c co ù ù the the å å tăng thêm, gia tăng thêm, gia û û m m đ đ i Ne i Ne á á u du u du ø ø ng ng nh nh ư ư õng ca õng ca á á u tru u tru ù ù c d c d ư ư õ lie õ lie ä ä u t u t ó ó nh nh đ đ ã bie ã bie á á t nh t nh ư ư ma ma û û ng ng đ đ e e å å bie bie å å u u diễn diễn Ỵ Ỵ Nh Nh ư ư õng thao ta õng thao ta ù ù c ph c ph ứ ứ c ta c ta ï ï p, ke p, ke ù ù m t m t ự ự nhiên nhiên Ỵ Ỵ ch ch ư ư ơng tr ơng tr ì ì nh kho nh kho ù ù đ đ o o ï ï c, kho c, kho ù ù ba ba û û o tr o tr ì ì va va ø ø nha nha á á t la t la ø ø kho kho ù ù co co ù ù the the å å s s ử ử du du ï ï ng bo ng bo ä ä nhơ nhơ ù ù mo mo ä ä t ca t ca ù ù ch co ch co ù ù hie hie ä ä u qua u qua û û . .   D D ư ư õ lie õ lie ä ä u t u t ó ó nh sẽ chie nh sẽ chie á á m vu m vu ø ø ng nhơ ng nhơ ù ù đ đ ã da ã da ø ø nh cho chu nh cho chu ù ù ng suo ng suo á á t t qua qua ù ù tr tr ì ì nh hoa nh hoa ï ï t t đ đ o o ä ä ng cu ng cu û û a ch a ch ư ư ơng tr ơng tr ì ì nh nh Ỵ Ỵ s s ử ử du du ï ï ng bo ng bo ä ä nhơ nhơ ù ù ke ke ù ù m hie m hie ä ä u qua u qua û û . . Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 7 H H ư ư ơ ơ ù ù ng gia ng gia û û i quye i quye á á t t   Ca Ca à à n xây d n xây d ự ự ng ca ng ca á á u tru u tru ù ù c d c d ư ư õ lie õ lie ä ä u u đ đ a a ù ù p p ứ ứ ng ng đư đư ơ ơ ï ï c ca c ca ù ù c yêu c yêu ca ca à à u: u:   Linh Linh đ đ o o ä ä ng hơn. ng hơn.   Co Co ù ù the the å å thay thay đ đ o o å å i k i k í í ch th ch th ư ư ơ ơ ù ù c, ca c, ca á á u tru u tru ù ù c trong suo c trong suo á á t thơ t thơ ø ø i i gian so gian so á á ng. ng. Ỵ Ỵ Ca Ca á á u tru u tru ù ù c d c d ư ư õ lie õ lie ä ä u u đ đ o o ä ä ng. ng. Kie Kie å å u d u d ö ö õ lie õ lie ä ä u u Con tro Con tro û û Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 9 Bie Bie á á n không n không đ đ o o ä ä ng ng Bie Bie á á n không n không đ đ o o ä ä ng (bie ng (bie á á n t n t ó ó nh, bie nh, bie á á n n n n ử ử a t a t ó ó nh) la nh) la ø ø nh nh ư ư õng bie õng bie á á n tho n tho û û a: a:   Đư Đư ơ ơ ï ï c khai ba c khai ba ù ù o t o t ư ư ơ ơ ø ø ng minh, ng minh,   To To à à n ta n ta ï ï i khi va i khi va ø ø o pha o pha ï ï m vi khai ba m vi khai ba ù ù o va o va ø ø ch ch ỉ ỉ ma ma á á t khi ra kho t khi ra kho û û i i pha pha ï ï m vi na m vi na ø ø y, y,   Đư Đư ơ ơ ï ï c ca c ca á á p pha p pha ù ù t vu t vu ø ø ng nhơ ng nhơ ù ù trong vu trong vu ø ø ng d ng d ư ư õ lie õ lie ä ä u (Data segment) u (Data segment) hoa hoa ë ë c la c la ø ø Stack ( Stack ( đ đ o o á á i vơ i vơ ù ù i bie i bie á á n n n n ử ử a t a t ó ó nh nh - - ca ca ù ù c bie c bie á á n cu n cu ï ï c bo c bo ä ä ). ).   K K í í ch th ch th ư ư ơ ơ ù ù c không thay c không thay đ đ o o å å i trong suo i trong suo á á t qua t qua ù ù tr tr ì ì nh so nh so á á ng. ng.   Do Do đư đư ơ ơ ï ï c khai ba c khai ba ù ù o t o t ư ư ơ ơ ø ø ng minh, ca ng minh, ca ù ù c bie c bie á á n không n không đ đ o o ä ä ng co ng co ù ù mo mo ä ä t t đ đ ònh danh ònh danh đ đ ã ã đư đư ơ ơ ï ï c ke c ke á á t no t no á á i vơ i vơ ù ù i i đ đ òa ch òa ch ỉ ỉ vu vu ø ø ng nhơ ng nhơ ù ù l l ư ư u tr u tr ư ư õ bie õ bie á á n n va va ø ø đư đư ơ ơ ï ï c truy xua c truy xua á á t tr t tr ự ự c tie c tie á á p thông qua p thông qua đ đ ònh danh ònh danh đ đ o o ù ù . .   V V í í du du ï ï : : int a; // a, b là các biến không động char b[10]; Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 10 Kie Kie å å u d u d ư ư õ lie õ lie ä ä u Con tro u Con tro û û   Cho tr Cho tr ư ư ơ ơ ù ù c kie c kie å å u d u d ư ư õ lie õ lie ä ä u T = <V, O>. u T = <V, O>.   Kie Kie å å u con tro u con tro û û - - ky ky ù ù hie hie ä ä u u “ “ Tp Tp ” ” - - ch ch ỉ ỉ đ đ e e á á n ca n ca ù ù c pha c pha à à n t n t ử ử co co ù ù kie kie å å u u “ “ T T ” ” đư đư ơ ơ ï ï c c đ đ ònh ngh ònh ngh ó ó a: Tp = <Vp, Op>, trong a: Tp = <Vp, Op>, trong đ đ o o ù ù : :   Vp = {{ca Vp = {{ca ù ù c c đ đ ia ia ï ï ch ch ỉ ỉ co co ù ù the the å å l l ư ư u tr u tr ư ư õ nh õ nh ư ư õng õng đ đ o o á á i t i t ư ư ơ ơ ï ï ng co ng co ù ù kie kie å å u T}, u T}, NULL NULL } (vơ } (vơ ù ù i i NULL NULL la la ø ø mo mo ä ä t gia t gia ù ù trò trò đ đ a a ë ë c bie c bie ä ä t t t t ư ư ơ ơ ï ï ng tr ng tr ư ư ng cho mo ng cho mo ä ä t gia t gia ù ù trò không bie trò không bie á á t hoa t hoa ë ë c không c không quan tâm) quan tâm)   Op = {ca Op = {ca ù ù c thao ta c thao ta ù ù c c đ đ ònh ònh đ đ òa ch òa ch ỉ ỉ cu cu û û a mo a mo ä ä t t đ đ o o á á i t i t ư ư ơ ơ ï ï ng ng thuo thuo ä ä c kie c kie å å u T khi bie u T khi bie á á t con tro t con tro û û ch ch ỉ ỉ đ đ e e á á n n đ đ o o á á i t i t ư ư ơ ơ ï ï ng ng đ đ o o ù ù } } (th (th ư ư ơ ơ ø ø ng go ng go à à m ca m ca ù ù c thao ta c thao ta ù ù c ta c ta ï ï o mo o mo ä ä t con tro t con tro û û ch ch ỉ ỉ đ đ e e á á n mo n mo ä ä t t đ đ o o á á i t i t ư ư ơ ơ ï ï ng thuo ng thuo ä ä c kie c kie å å u T; hu u T; hu û û y mo y mo ä ä t t đ đ o o á á i t i t ư ư ơ ơ ï ï ng d ng d ư ư õ lie õ lie ä ä u u thuo thuo ä ä c kie c kie å å u T khi bie u T khi bie á á t con tro t con tro û û ch ch ỉ ỉ đ đ e e á á n n đ đ o o á á i t i t ư ư ơ ơ ï ï ng ng đ đ o o ù ù ). ). [...]... truy xuất đến biến động ng thông qua biến con trỏ đã biết đònh danh Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 16 Biến động ng Hai thao tác cơ bản trên biến động là tạo và hủy một ng biến động do biến con trỏ ‘p’ trỏ đến: ng Tạo ra một biến động và cho con trỏ ‘p’ chỉ đến nó ng Hủy một biến động do p chỉ đến ng Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 17 Biến động ng Tạo ra một biến động và cho con trỏ... chỉ đến cấu trúc NODE }; Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 32 SList – Tổ chức 1 phần tử Ví dụ : Đònh nghóa một phần tử trong danh sách đơn lưu ch trữ hồ sơ sinh viên: typedef struct SV { char Ten[30]; int MaSV; }; typedef struct SVNode { SV Info; struct SVNode * pNext; }; Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 33 SList – Tổ chức, quản lý Một phần tử trong danh sách đơn là một biến động sẽ... B Cấu trúc Dữ liệu - Cấu trúc dữ liệu động C D 29 Danh sách liên kết (List) ch Các hình thức tổ chức danh sách ch Danh sách liên kết vòng : phần tử cuối danh sách liên kết ch ng ch với phần tử đầu danh sách: ch A B A X B Cấu trúc Dữ liệu - Cấu trúc dữ liệu động Z C Y D 30 Danh sách đơn ch SList (xâu đơn) SList – Tổ chức 1 phần tử Mỗi phần tử của danh sách đơn gồm 2 thành phần : ch nh Thành phần dữ liệu: ... qua một số phần tử khác Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 27 Danh sách liên kết (List) ch Các hình thức tổ chức danh sách ch Mối liên hệ giữa các phần tử được thể hiện tường minh ng Có nhiều kiểu tổ chức liên kết giữa các phần tử trong danh sách như : ch Danh sách liên kết đơn ch Danh sách liên kết kép ch Danh sách liên kết vòng ch ng … Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 28 Danh sách liên... (chỉ lưu đòa chỉ offset) hay far (lưu cả segment lẫn offset) Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 12 Con trỏ – Khai báo Cú pháp đònh nghóa một kiểu con trỏ trong ngôn ngữ C : typedef * < kiểu con trỏ>; Ví dụ : typedef int *intpointer; intpointer p; hoặc int *p; là những khai báo hợp lệ Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 13 Con trỏ – Thao tác căn bản Các thao tác cơ bản trên kiểu... thao tác tìm hồ sơ của một học sinh, in danh sách hồ sơ ch Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 22 Danh sách liên kết (List) ch Các hình thức tổ chức danh sách ch Các hình thức tổ chức danh sách: ch Mối liên hệ giữa các phần tử được thể hiện ngầm Mối liên hệ giữa các phần tử được thể hiện tường ng minh Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 23 Danh sách liên kết (List) ch Các hình thức tổ chức... NODE* pTail; pTail pHead A B Cấu trúc Dữ liệu - Cấu trúc dữ liệu động X Z Y 35 SList – Tổ chức, quản lý Khai báo kiểu của 1 phần tử và kiểu danh sách liên kết đơn: ch // kiểu của một phần tử trong danh sách typedef struct NODE { Data Info; struct NODE * pNext; }; typedef struct SLIST { NODE* pHead; NODE* pTail; // kiểu danh sách liên kết }; Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 36 ... tới Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 18 Biến động – Ví dụ ng int *p1, *p2; // cấp phát vùng nhớ cho 1 biến động kiểu int p1 = (int*)malloc(sizeof(int)); *p1 = 5; // đặt giá trò 5 cho biến động đang được p1 quản lý // cấp phát biến động kiểu mảng gồm 10 phần tử kiểu int p2 = (int*)calloc(10, sizeof(int)); *(p2+3) = 0; // đặt giá trò 0 cho phần tử thứ 4 của mảng p2 free(p1); free(p2); Cấu trúc. .. quá trình sống ng Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 15 Biến động ng Do không được khai báo tường minh nên các biến động ng ng không có một đònh danh được kết buộc với đòa chỉ vùng ng nhớ cấp phát cho nó, do đó gặp khó khăn khi truy xuất đến một biến động ng Để giải quyết vấn đề, biến con trỏ (là biến không động) ng được sử dụng để trỏ đến biến động ng ng Khi tạo ra một biến động, phải dùng một... trỏ đến (*p) ng Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 14 Biến động ng Trong nhiều trường hợp, tại thời điểm biên dòch không ng p, thể xác đònh trước kích thước chính xác của một số đối tượng dữ liệu do sự tồn tại và tăng trưởng của chúng phụ ng ng ng thuộc vào ngữ cảnh của việc thực hiện chương trình nh Các đối tượng dữ liệu có đặc điểm kể trên nên được khai ng báo như biến động Biến động là những . đ đ o o ù ù . .   V V í í du du ï ï : : int a; // a, b là các biến không động char b[10]; Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 10 Kie Kie å å u d u d ư ư õ lie õ lie ä ä u Con tro u Con tro û û   Cho. tro tro û û tơ tơ ù ù i i Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 19 Bie Bie á á n n đ đ o o ä ä ng ng – – V V í í du du ï ï int *p1, *p2; // cấp phát vùng nhớ cho 1 biến động kiểu int p1 = (int*)malloc(sizeof(int)); *p1. te á á vo vo á á n sinh n sinh đ đ o o ä ä ng, phong phu ng, phong phu ù ù . . Cấu trúc Dữ liệu - Cấu trúc dữ liệu động 4 V V í í du du ï ï th th ự ự c te c te á á   Mô ta Mô ta û û , qua , qua û û n

Ngày đăng: 27/06/2014, 09:20

TỪ KHÓA LIÊN QUAN

w