intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p10

Chia sẻ: Gsag Gsdgdf | Ngày: | Loại File: PDF | Số trang:5

58
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p10', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Giáo trình phân tích khả năng sử dụng thuật toán hiệu chỉnh trong đường chạy lập trình p10

  1. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o SLL_Type SLL_Add_First(SLL_Type &SList, T NewData) c u -tr a c k c u -tr a c k { SLL_Type NewNode = SLL_Create_Node(NewData); if (NewNode == NULL) return (NULL); NewNode->NextNode = SList; SList = NewNode; return (SList); } //================================================================= SLL_Type SLL_Add_Last(SLL_Type &SList, T NewData) { SLL_Type NewNode = SLL_Create_Node(NewData); if (NewNode == NULL) return (NULL); if (SList == NULL) { SList = NewNode; return (SList); } SLL_Type CurNode = SList; while (CurNode->NextNode != NULL) CurNode = CurNode->NextNode; CurNode->NextNode = NewNode; return (SList); } //================================================================= SLL_Type SLL_Add_Mid(SLL_Type &SList, T NewData, SLL_Type &InsNode) { SLL_Type NewNode = SLL_Create_Node(NewData); if (NewNode == NULL) return (NULL); if (InsNode->NextNode == NULL) { InsNode->NextNode = NewNode; return (SList); } NewNode->NextNode = InsNode->NextNode; InsNode->NextNode = NewNode; return (SList); } d. Duyeät qua caùc nuùt trong danh saùch: Ñaây laø moät thao taùc thöôøng xuyeân xaûy ra treân danh saùch lieân keát ñôn noùi chung vaø caùc danh saùch khaùc noùi rieâng ñeå thöïc hieän thao taùc xöû lyù caùc nuùt hoaëc xöû lyù döõ lieäu taïi caùc nuùt. Coù nhieàu thao taùc xöû lyù tuøy töøng tröôøng hôïp vaø yeâu caàu song ôû ñaây ñôn giaûn chuùng ta chæ duyeät ñeå xem noäi dung thaønh phaàn döõ lieäu trong danh saùch. - Thuaät toaùn: B1: CurNode = SLList B2: IF (CurNode = NULL) Thöïc hieän Bkt Trang: 98
  2. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o B3: OutputData(CurNode->Key) // Xuaát giaù trò thaønh phaàn döõ lieäu trong 1 nuùt c u -tr a c k c u -tr a c k B4: CurNode = CurNode->NextNode B5: Laëp laïi B2 Bkt: Keát thuùc - Caøi ñaët thuaät toaùn: Haøm SLL_Travelling coù prototype: void SLL_Travelling(SLL_Type SList); Haøm duyeät qua caùc nuùt trong danh saùch lieân keát ñôn quaûn lyù bôûi ñòa chæ nuùt ñaàu tieân thoâng qua SList ñeå xem noäi dung thaønh phaàn döõ lieäu cuûa moãi nuùt. Noäi dung cuûa haøm nhö sau: void SLL_Travelling (SLL_Type SList) { SLL_Type CurNode = SList; while (CurNode != NULL) { OutputData(CurNode->Key); CurNode = CurNode->NextNode; } return; } Löu yù: Haøm OutputData thöïc hieän vieäc xuaát noäi dung cuûa moät bieán coù kieåu döõ lieäu T. Tuøy vaøo töøng tröôøng hôïp cuï theå maø chuùng ta vieát haøm OutputData cho phuø hôïp. e. Tìm kieám moät phaàn töû trong danh saùch: Giaû söû chuùng ta caàn tìm kieám xem trong danh saùch lieân keát ñôn coù toàn taïi nuùt coù thaønh phaàn döõ lieäu laø SearchData hay khoâng. Thao taùc naøy chuùng ta vaän duïng thuaät toaùn tìm tuyeán tính ñeå tìm kieám. - Thuaät toaùn: B1: CurNode = SLList B2: IF (CurNode = NULL OR CurNode->Key = SearchData) Thöïc hieän Bkt B3: CurNode = CurNode->NextNode B4: Laëp laïi B2 Bkt: Keát thuùc - Caøi ñaët thuaät toaùn: Haøm SLL_Searching coù prototype: SLL_Type SLL_Searching(SLL_Type SList, T SearchData); Haøm thöïc hieän vieäc tìm kieám nuùt coù thaønh phaàn döõ lieäu laø SearchData treân danh saùch lieân keát ñôn quaûn lyù bôûi ñòa chæ nuùt ñaàu tieân thoâng qua SList. Haøm traû veà ñòa chæ cuûa nuùt ñaàu tieân trong danh saùch khi tìm thaáy, ngöôïc laïi haøm traû veà con troû NULL. Noäi dung cuûa haøm nhö sau: Trang: 99
  3. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o SLL_Type SLL_Searching(SLL_Type SList, T SearchData) c u -tr a c k c u -tr a c k { SLL_Type CurNode = SList; while (CurNode != NULL) { if (CurNode->Key == SearchData) break; CurNode = CurNode->NextNode; } return (CurNode); } f. Loaïi boû bôùt moät phaàn töû ra khoûi danh saùch: Giaû söû chuùng ta caàn loaïi boû phaàn töû coù giaù trò thaønh phaàn döõ lieäu laø DelData trong danh saùch lieân keát ñôn. Ñeå thöïc hieän ñieàu naøy tröôùc tieân chuùng ta phaûi thöïc hieän thao taùc tìm kieám ñòa chæ cuûa nuùt coù thaønh phaàn döõ lieäu laø DelData, sau ñoù môùi thöïc hieän thao taùc loaïi boû neáu tìm thaáy. Tuy nhieân trong quaù trình tìm kieám, neáu tìm thaáy chuùng ta phaûi ghi nhaän ñòa chæ cuûa nuùt ñöùng ngay tröôùc nuùt tìm thaáy laø PreDelNode. - Thuaät toaùn: // Tìm kieám nuùt coù Key laø DelData trong danh saùch B1: DelNode = SLList B2: PreDelNode = NULL B3: IF (DelNode = NULL) Thöïc hieän Bkt B4: IF (DelNode->Key=DelData) Thöïc hieän B8 B5: PreDelNode = DelNode B6: DelNode = DelNode->NextNode B7: Laëp laïi B3 // Loaïi boû nuùt taïi ñòa chæ DelNode ra khoûi danh saùch B8: IF (PreDelNode = NULL) // Loaïi boû nuùt ñaàu tieân trong danh saùch B8.1: SLList = SLList->NextNode B8.2: Thöïc hieän B10 // Lieân keát caùc noát sau DelNode veà nuùt PreDelNode B9: PreDelNode->NextNode = DelNode->NextNode // Caét moái lieân keát giöõa DelNode vôùi caùc nuùt coøn laïi trong danh saùch // vaø huûy DelNode B10: DelNode->NextNode = NULL B11: delete DelNode Bkt: Keát thuùc - Caøi ñaët thuaät toaùn: Haøm SLL_Delete_Node coù prototype: int SLL_Delete_Node (SLL_Type &SList, T DelData); Trang: 100
  4. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o Haøm thöïc hieän vieäc xoùa phaàn töû coù thaønh phaàn döõ lieäu laø DelData trong danh saùch c u -tr a c k c u -tr a c k lieân keát quaûn lyù bôûi con troû ñaàu SList. Haøm traû veà giaù trò 1 neáu vieäc xoùa thaønh coâng vaø ngöôïc laïi, haøm traû veà giaù trò -1. Noäi dung cuûa haøm nhö sau: int SLL_Delete_Node (SLL_Type &SList, T DelData) { SLL_Type DelNode = SList; SLL_Type PreDelNode = NULL; while (DelNode != NULL) { if (DelNode->Key == DelData) break; PreDelNode = DelNode; DelNode = DelNode->NextNode; } if (DelNode == NULL) return (-1); if (PreDelNode == NULL) SList = SList->NextNode; else PreDelNode->NextNode = DelNode->NextNode; DelNode->NextNode = NULL; delete DelNode; return (1); } - Minh hoïa thuaät toaùn: + Giaû söû chuùng ta caàn huûy nuùt coù thaønh phaàn döõ lieäu laø 25: DelData = 25 SLList NULL 25 10 20 18 40 35 30 DelNode SLList = SLList->NextNode DelNode SLList NULL 25 10 20 18 40 35 30 DelNode->NextNode = NULL DelNode SLList NULL 25 10 20 18 40 35 30 NULL Keát quaû sau khi huûy: SLList 10 20 18 40 35 30 NULL Trang: 101
  5. h a n g e Vi h a n g e Vi XC XC e e F- F- w w PD PD er er ! ! W W O O . N N y y bu bu to to Giaùo trình: Caáu Truùc Döõ Lieäu vaø Giaûi Thuaät k k lic lic C C w w m m w w w w o o .c .c .d o .d o c u -tr a c k c u -tr a c k + Baây giôø giaû söû chuùng ta caàn huûy nuùt coù thaønh phaàn döõ lieäu laø 20: DelData = 20 SLList DelNode NULL 25 10 20 18 40 35 30 PreDelNode PreDelNode->NextNode = DelNode->Next SLList DelNode NULL 25 10 20 18 40 35 30 PreDelNode DelNode->Next = NULL SLList DelNode NULL NULL 25 10 20 18 40 35 30 PreDelNode Keát quaû sau khi huûy: SLList 25 10 18 40 35 30 NULL g. Huûy danh saùch: Thao taùc naøy thöïc chaát laø thöïc hieän nhieàu laàn thao taùc huûy moät nuùt. - Thuaät toaùn: B1: IF (SLList = NULL) Thöïc hieän Bkt B2: TempNode = SLList B3: SLList = SLList->NextNode B4: TempNode->NextNode = NULL B5: delete TempNode B6: Laëp laïi B1 Bkt: Keát thuùc - Caøi ñaët: Haøm SLL_Delete coù prototype: void SLL_Delete (SLL_Type &SList); Haøm thöïc hieän vieäc huûy toaøn boä danh saùch SList. Noäi dung cuûa haøm nhö sau: void SLL_Delete (SLL_Type &SList) { SLL_Type TempNode = SList; while (SList != NULL) { SList = SList->NextNode; TempNode->NextNode = NULL; Trang: 102
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2