Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 210 trang
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ấutrúcDữliệu - Cấutrúcdữ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 dudu ï ï ng. ng. CấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữliệuđộng 4 V V í í dudu ï ï 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ấutrúcDữliệu - Cấutrúcdữliệuđộng 5 V V í í dudu ï ï 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 ử ử dudu ï ï 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ấutrúcDữliệu - Cấutrúcdữ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 ử ử dudu ï ï 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 ử ử dudu ï ï ng bo ng bo ä ä nhơ nhơ ù ù ke ke ù ù m hie m hie ä ä u qua u qua û û . . CấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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 í í dudu ï ï : : int a; // a, b là các biến không động char b[10]; CấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữliệuđộng 17 Biến động ng Tạo ra một biến động và cho con trỏ... chỉ đến cấutrúc NODE }; CấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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úcDữliệu - Cấu trúcdữ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úcDữliệu - Cấu trúcdữ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úcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữliệuđộng 36 ... tới CấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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ấutrúcDữliệu - Cấutrúcdữ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