Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Đỗ Ngọc Như Loan
Số trang: 84
Loại file: pptx
Dung lượng: 542.19 KB
Lượt xem: 12
Lượt tải: 0
Xem trước 9 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Cấu trúc dữ liệu và giải thuật - Chương 3: Danh sách (List)" cung cấp cho người học các kiến thức: Danh sách liên kết đơn, các thao tác trên danh sách liên kết, listInsert, listwalk (duyệt ds),... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Đỗ Ngọc Như LoanGV:ĐỗNgọcNhưLoanDanhsáchliênkếtđơnDanhsáchliênkếtképDanhsáchliênkếtDanhsáchliênkếtđơn Danhsáchliênkếtđơnlàmộttậpcácnút biểudiễncấutrúcdữliệugồmcácđốitượng đượcsắpđặttheomộttrậttựtuyếntính Trậttựtuyếntínhtrongdanhsáchliênkết đượcxácđịnhbởicácpointerkếthợpvớimỗi đốitượng Danhsáchliênkếtcungcấpmộtsựbiểu diễnmềmdẻovàđơngiảnchocáctậpđộng, hỗtrợcácthaotácnhưtìmkiếm,chèn,xóa v.v Vídụvềmộtdanhsáchliênkếtđơn MỗinútxtrongDSlưutrữmộtđốitượngcó mộtkhóa(cóthểcóthôngtinkhác)vàmột pointernextchỉđếnnút(đốitượng)kếtiếp Nếunext[x]=NULL,thìxlànútcuốicùngcòn gọilàđuôicủadanhsách DanhsáchLlàrỗngkhiL=NULLCácthaotáctrêndanhsáchliênkết ListInitialize(L) ListSearch(L,k) ListInsert(L,k) ListDelete(L,k) ListWalk(L)ĐỊNHNGHĨADANHSÁCHLIÊNKẾTĐƠNTRONGC++ Danhsáchcácđốitượngcókhóalàsố nguyêntypedefstructCELL*LIST;structCELL{ intkey; LISTnext; };LISTL;ListInitializevoid ListInitialize(LIST &L){ L=NULL;}ListSearch ThaotácListSearch(L,k)tìmmộtđốitượng cókhóaktrongdanhsáchL Nếucóđốitượngcókhóak,thủtụcsẽtrảvề mộtpointerchỉđếnđốitượngnày Nếukhôngcóđốitượngnàocókhóabằngk trongdanhsách,thủtụctrảvềNULLListSearchLIST ListSearch(LIST L, int k){ LIST x; x=L; while(x!=NULL && x->key!=k) x=x->next; return x;}ListInsert ThaotácListInsert(L,k)thựchiệnđơngiản bằngcáchchènđốitượngxcókhóakvào đầucủaLListInsertvoid ListInsert(LIST &L, int k){ LIST x; x=new(CELL); x->key=k; x->next=L; L=x;}ListDelete ThaotácListDelete(L,k)xóađốitượngxcó khóakkhỏiL Đượcthựchiệnbằngcáchtìmxvàcậpnhật lạicáccontrỏnútyđitrướcxđểloạixra khỏidanhsáchListDeletevoid ListDelete(LIST &L,int k){ LIST x, y; if(L!= NULL) { y= NULL; x =L; while(x!=NULL && x->key!=k) { y=x; x=x->next; } if(x!=NULL) //Tìm thấy {ListWalk(DuyệtDS)void ListWalk(LIST L){ if(L!=NULL) { coutĐỘPHỨCTẠPCÁCTHAOTÁC ListSearch(L,k)cóđộphứctạptrungbình T(n)=O(n) ListInsert(L,k)cóđộphứctạpT(n)=O(1) ListDelete(L,k)cóđộphứctạptrungbình T(n)=O(n)DANHSÁCHLIÊNKẾTKÉP Danhsáchliênkếtképlàcấutrúcdữliệu trongđócácđốitượngđượcsắpđặttheo mộttrậttựtuyếntính Trậttựtuyếntínhtrongdanhsáchliênkết képđượcxácđịnhbởimộtcặppointertrong mỗiđốitượngĐỊNHNGHĨADANHSÁCHLIÊNKẾTKÉPTRONGC++ Danhsáchcácđốitượngcókhóalàsố nguyêntypedef struct CELL *LIST;struct CELL { int key; LIST prev, next; };LIST L;ListInitializevoid ListInitialize(LIST &L){ L=NULL;}ListSearch ThaotácListSearch(L,k)tìmmộtphầntửcó khóaktrongdanhsáchL Nếucóphầntửcókhóak,thủtụcsẽtrảvề mộtpointerchỉđếnphầntửnày Nếukhôngcóđốitượngnàocókhóabằngk trongdanhsách,thủtụctrảvềNULLListSearchLIST ListSearch(LIST L, int k){ LIST x; x=L; while(x!=NULL && x->key!=k) x=x->next; return x;}
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - Đỗ Ngọc Như LoanGV:ĐỗNgọcNhưLoanDanhsáchliênkếtđơnDanhsáchliênkếtképDanhsáchliênkếtDanhsáchliênkếtđơn Danhsáchliênkếtđơnlàmộttậpcácnút biểudiễncấutrúcdữliệugồmcácđốitượng đượcsắpđặttheomộttrậttựtuyếntính Trậttựtuyếntínhtrongdanhsáchliênkết đượcxácđịnhbởicácpointerkếthợpvớimỗi đốitượng Danhsáchliênkếtcungcấpmộtsựbiểu diễnmềmdẻovàđơngiảnchocáctậpđộng, hỗtrợcácthaotácnhưtìmkiếm,chèn,xóa v.v Vídụvềmộtdanhsáchliênkếtđơn MỗinútxtrongDSlưutrữmộtđốitượngcó mộtkhóa(cóthểcóthôngtinkhác)vàmột pointernextchỉđếnnút(đốitượng)kếtiếp Nếunext[x]=NULL,thìxlànútcuốicùngcòn gọilàđuôicủadanhsách DanhsáchLlàrỗngkhiL=NULLCácthaotáctrêndanhsáchliênkết ListInitialize(L) ListSearch(L,k) ListInsert(L,k) ListDelete(L,k) ListWalk(L)ĐỊNHNGHĨADANHSÁCHLIÊNKẾTĐƠNTRONGC++ Danhsáchcácđốitượngcókhóalàsố nguyêntypedefstructCELL*LIST;structCELL{ intkey; LISTnext; };LISTL;ListInitializevoid ListInitialize(LIST &L){ L=NULL;}ListSearch ThaotácListSearch(L,k)tìmmộtđốitượng cókhóaktrongdanhsáchL Nếucóđốitượngcókhóak,thủtụcsẽtrảvề mộtpointerchỉđếnđốitượngnày Nếukhôngcóđốitượngnàocókhóabằngk trongdanhsách,thủtụctrảvềNULLListSearchLIST ListSearch(LIST L, int k){ LIST x; x=L; while(x!=NULL && x->key!=k) x=x->next; return x;}ListInsert ThaotácListInsert(L,k)thựchiệnđơngiản bằngcáchchènđốitượngxcókhóakvào đầucủaLListInsertvoid ListInsert(LIST &L, int k){ LIST x; x=new(CELL); x->key=k; x->next=L; L=x;}ListDelete ThaotácListDelete(L,k)xóađốitượngxcó khóakkhỏiL Đượcthựchiệnbằngcáchtìmxvàcậpnhật lạicáccontrỏnútyđitrướcxđểloạixra khỏidanhsáchListDeletevoid ListDelete(LIST &L,int k){ LIST x, y; if(L!= NULL) { y= NULL; x =L; while(x!=NULL && x->key!=k) { y=x; x=x->next; } if(x!=NULL) //Tìm thấy {ListWalk(DuyệtDS)void ListWalk(LIST L){ if(L!=NULL) { coutĐỘPHỨCTẠPCÁCTHAOTÁC ListSearch(L,k)cóđộphứctạptrungbình T(n)=O(n) ListInsert(L,k)cóđộphứctạpT(n)=O(1) ListDelete(L,k)cóđộphứctạptrungbình T(n)=O(n)DANHSÁCHLIÊNKẾTKÉP Danhsáchliênkếtképlàcấutrúcdữliệu trongđócácđốitượngđượcsắpđặttheo mộttrậttựtuyếntính Trậttựtuyếntínhtrongdanhsáchliênkết képđượcxácđịnhbởimộtcặppointertrong mỗiđốitượngĐỊNHNGHĨADANHSÁCHLIÊNKẾTKÉPTRONGC++ Danhsáchcácđốitượngcókhóalàsố nguyêntypedef struct CELL *LIST;struct CELL { int key; LIST prev, next; };LIST L;ListInitializevoid ListInitialize(LIST &L){ L=NULL;}ListSearch ThaotácListSearch(L,k)tìmmộtphầntửcó khóaktrongdanhsáchL Nếucóphầntửcókhóak,thủtụcsẽtrảvề mộtpointerchỉđếnphầntửnày Nếukhôngcóđốitượngnàocókhóabằngk trongdanhsách,thủtụctrảvềNULLListSearchLIST ListSearch(LIST L, int k){ LIST x; x=L; while(x!=NULL && x->key!=k) x=x->next; return x;}
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu Cấu trúc dữ liệu và giải thuật Danh sách Danh sách liên kết đơn Danh sách liên kếtTài liệu liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 318 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 166 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 163 0 0 -
3 trang 162 3 0
-
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Trần Hạnh Nhi
123 trang 156 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 152 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 143 0 0 -
Giáo trình Cấu trúc dữ liệu và thuật toán (Tái bản): Phần 1
152 trang 139 0 0 -
10 trang 138 0 0
-
57 trang 134 1 0