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

Giáo trình hướng dẫn phân tích hàm Input new data để tách một list thành nhiều danh sách p3

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

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

Trong thao tác này chỉ đơn giản là chúng ta cho giá trị các con trỏ quản lý địa chỉ hai nút đầu và cuối danh sách liên kết đôi về con trỏ NULL. Hàm khởi tạo danh sách liên kết đôi như sau: DLLP_Type DLL_Initialize(DLLP_Type &DList) { DList.DLL_First = NULL; DList.DLL_Last = NULL; return (DList); } Hình ảnh minh họa: DList NULL DLL_First DLL_Last NULL

Chủ đề:
Lưu

Nội dung Text: Giáo trình hướng dẫn phân tích hàm Input new data để tách một list thành nhiều danh sách p3

  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 c u -tr a c k c u -tr a c k a. Khôûi taïo danh saùch (Initialize): Trong thao taùc naøy chæ ñôn giaûn laø chuùng ta cho giaù trò caùc con troû quaûn lyù ñòa chæ hai nuùt ñaàu vaø cuoái danh saùch lieân keát ñoâi veà con troû NULL. Haøm khôûi taïo danh saùch lieân keát ñoâi nhö sau: DLLP_Type DLL_Initialize(DLLP_Type &DList) { DList.DLL_First = NULL; DList.DLL_Last = NULL; return (DList); } Hình aûnh minh hoïa: DList NULL DLL_First DLL_Last NULL b. Taïo môùi moät phaàn töû / nuùt: Giaû söû chuùng ta caàn taïo môùi moät phaàn töû coù thaønh phaàn döõ lieäu laø NewData. - Thuaät toaùn: B1: DNode = new DLL_OneNode B2: IF (DNode = NULL) Thöïc hieän Bkt B3: DNode->NextNode = NULL B4: DNode->PreNode = NULL B5: DNode->Key = NewData Bkt: Keát thuùc - Caøi ñaët thuaät toaùn: Haøm DLL_Create_Node coù prototype: DLL_Type DLL_Create_Node(T NewData); Haøm taïo môùi moät nuùt coù thaønh phaàn döõ lieäu laø NewData, haøm traû veà con troû troû tôùi ñòa chæ cuûa nuùt môùi taïo. Neáu khoâng ñuû boä nhôù ñeå taïo, haøm traû veà con troû NULL. DLL_Type DLL_Create_Node(T NewData) { DLL_Type Pnode = new DLL_OneNode; if (Pnode != NULL) { Pnode->NextNode = NULL; Pnode->PreNode = NULL; Pnode->Key = NewData; } return (Pnode); } - Minh hoïa thuaät toaùn: Giaû söû chuùng ta caàn taïo nuùt coù thaønh phaàn döõ lieäu laø 20: NewData = 20 Trang: 113
  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 Pnode = new DLL_OneNode c u -tr a c k c u -tr a c k Pnode Pnode->NextNode = NULL Pnode->PreNode = NULL Pnode->Key = NewData Pnode NULL 20 NULL c. Theâm moät phaàn töû vaøo trong danh saùch: Giaû söû chuùng ta caàn theâm moät phaàn töû coù giaù trò thaønh phaàn döõ lieäu laø NewData vaøo trong danh saùch. Vieäc theâm coù theå dieãn ra ôû ñaàu, cuoái hay ôû giöõa danh saùch lieân keát. Do vaäy, ôû ñaây chuùng ta trình baøy 3 thao taùc theâm rieâng bieät nhau: - Thuaät toaùn theâm phaàn töû vaøo ñaàu danh saùch lieân keát ñoâi: B1: NewNode = DLL_Create_Node (NewData) B2: IF (NewNode = NULL) Thöïc hieän Bkt B3: IF (DLL_List.DLL_First = NULL) // Danh saùch roãng B3.1: DLL_List.DLL_First = NewNode B3.2: DLL_List.DLL_Last = NewNode B3.3: Thöïc hieän Bkt B4: NewNode->NextNode = DLL_List.DLL_First // Noái DLL_First vaøo B5: DLL_List.DLL_First->PreNode = NewNode // sau NewNode // Chuyeån vai troø ñöùng ñaàu cuûa NewNode cho DLL_First B6: DLL_List.DLL_First = NewNode Bkt: Keát thuùc - Minh hoïa thuaät toaùn: Giaû söû chuùng ta caàn theâm nuùt coù thaønh phaàn döõ lieäu laø 27: NewData = 27 NewNode NULL 27 NULL DLL_List DLL_First DLL_Last NULL 16 20 18 40 30 NULL NewNode->NextNode = DLL_List.DLL_First: Trang: 114
  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 c u -tr a c k c u -tr a c k NewNode 27 NULL DLL_List DLL_First DLL_Last NULL 16 20 18 40 30 NULL DLL_List.DLL_First->PreNode = NewNode: NewNode 27 NULL DLL_List DLL_First DLL_Last NULL 16 20 18 40 30 DLL_List.DLL_First = NewNode: NewNode 27 NULL DLL_List DLL_First DLL_Last NULL 16 20 18 40 30 Keát quaû sau khi cheøn: DLL_List DLL_First DLL_Last NULL 27 16 20 18 40 30 NULL - Thuaät toaùn theâm phaàn töû vaøo cuoái danh saùch lieân keát ñoâi: B1: NewNode = DLL_Create_Node (NewData) B2: IF (NewNode = NULL) Thöïc hieän Bkt B3: IF (DLL_List.DLL_First = NULL) // Danh saùch roãng Trang: 115
  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 B3.1: DLL_List.DLL_First = NewNode c u -tr a c k c u -tr a c k B3.2: DLL_List.DLL_Last = NewNode B3.3: Thöïc hieän Bkt B4: DLL_List.DLL_Last->NextNode = NewNode // Noái NewNode vaøo B5: NewNode->PreNode = DLL_List.DLL_Last // sau DLL_Last // Chuyeån vai troø ñöùng cuoái cuûa NewNode cho DLL_Last B6: DLL_List.DLL_Last = NewNode Bkt: Keát thuùc - Minh hoïa thuaät toaùn: Giaû söû chuùng ta caàn theâm nuùt coù thaønh phaàn döõ lieäu laø 25: NewData = 25 NewNode NULL 25 NULL DLL_List DLL_First DLL_Last NULL 16 20 18 40 30 NULL DLL_List.DLL_Last->NextNode = NewNode: NewNode NULL 25 NULL DLL_List DLL_First DLL_Last 16 20 18 40 30 NULL NewNode->PreNode = DLL_List.DLL_Last NewNode NULL 25 DLL_List DLL_First DLL_Last 16 20 18 40 30 NULL Trang: 116
  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 DLL_List.DLL_Last = NewNode: NewNode NULL 25 DLL_List DLL_First DLL_Last 16 20 18 40 30 NULL Keát quaû sau khi cheøn: DLL_List DLL_First DLL_Last NULL 16 20 18 40 30 25 NULL - Thuaät toaùn theâm phaàn töû vaøo giöõa danh saùch lieân keát ñoâi: Giaû söû chuùng ta caàn theâm moät phaàn töû coù giaù trò thaønh phaàn döõ lieäu laø NewData vaøo trong danh saùch DLL_List vaøo ngay sau nuùt coù ñòa chæ InsNode. Trong thöïc teá nhieàu khi chuùng ta phaûi thöïc hieän thao taùc tìm kieám ñeå xaùc ñònh ñòa chæ InsNode, ôû ñaây giaû söû chuùng ta ñaõ xaùc ñònh ñöôïc ñòa chæ naøy. B1: IF (InsNode->NextNode = NULL) // Theâm vaøo cuoái DSLK B1.1: DLL_Add_Last (DLL_List, NewData) B1.2: Thöïc hieän Bkt B2: NewNode = DLL_Create_Node (NewData) B3: IF (NewNode = NULL) Thöïc hieän Bkt // Noái caùc nuùt keá sau InsNode vaøo sau NewNode B4: NewNode->NextNode = InsNode->NextNode B5: InsNode->NextNode->PreNode = NewNode // Chuyeån moái lieân keát giöõa InsNode vôùi nuùt keá cuûa noù veà NewNode B6: InsNode->NextNode = NewNode B7: NewNode->PreNode = InsNode Bkt: Keát thuùc - Minh hoïa thuaät toaùn: Giaû söû chuùng ta caàn theâm nuùt coù thaønh phaàn döõ lieäu laø 25 vaøo sau nuùt coù ñòa chæ InsNode nhö sau: NewData = 25 Trang: 117
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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