Tạo node mới trong DSLK đơn
Trong bài viết này, codehow sẽ hướng dẫn các bạn cách tạo node mới trong DSLK đơn. Các bạn cần tìm hiểu trước về DSLK đơn là gì? khi đó vào bài này các bạn sẽ dễ hiểu hơn nhé.
Như các bạn đã học ở bài trước thì một phần tử trong DSLK đơn là một node. Vậy để có thể làm việc được với DSLK đơn, việc đầu tiên ta cần tạo node.
Vậy làm thế nào để tạo node? Điều kiện cần để có thể tạo node là gì? Các bạn cùng mình bắt đầu ngay thôi nhé.
Tạo node mới trong DSLK đơn cần khai báo những gì?
Không đơn giản chúng ta chỉ cần tạo một node là có thể quản lý được DSLK đơn. Việc đầu tiên để có thể tạo được một node thì chúng ta cần cài đặt một DSLK đơn.
Về việc cài đặt này chúng ta có hai cách là sử dụng pHead và sử dụng pHead & pTail để cài đặt.
Cài đặt DSLK đơn sử dụng pHead
/* Khai báo giá trị data và con trỏ pNext trỏ tới phần tử kế tiếp */ struct Node { int data;// giá trị data của node Node *pNext;// con trỏ pNext }; /* Khai báo Node đầu pHead */ struct SingleList { Node *pHead; //Node đầu pHead }; /* khởi tạo giá trị cho Node */ void Initialize(SingleList &list) { list.pHead=NULL;// khởi tạo giá trị cho Node là Null }
Cài đặt DSLK đơn sử dụng pHead và pTail
/* Khai báo giá trị data và con trỏ pNext trỏ tới phần tử kế tiếp */ struct Node { int data;// giá trị data của node Node *pNext;// con trỏ pNext }; /* Khai báo Node đầu pHead và Node cuối pTail*/ struct SingleList { Node *pHead; //Node đầu pHead Node *pTail; // Node cuối pTail }; /* khởi tạo giá trị cho Node đầu và Node cuối */ void Initialize(SingleList &list) { list.pHead=list.pTail=NULL;// khởi tạo giá trị cho Node đầu và Node cuối là Null }
Để hiểu rõ hơn về phần này, các bạn có thể xem lại bài viết về cấu trúc dữ liệu của DSLK đơn trong C / C++.
Cách tạo node mới trong DSLK đơn
Sau khi các bạn đã cài đặt DSLK đơn bào gồm việc khai báo cấu trúc pHead hoặc pHead & pTail, khai báo và khởi tạo node. Bây giờ chúng ta đã có thể bắt đầu tạo node mới cho DSLK đơn được rồi.
Dưới đây là hàm tạo node, các bạn có thể tham khảo, mình sẽ giải thích ngay bên dưới.
/* tạo Node trong danh sách liên kết đơn */ Node *CreateNode(int d) { Node *pNode=new Node; //sử dụng pNode để tạo một Node mới if(pNode!=NULL) // Nếu pNode != Null, tức là pNode có giá trị thì { pNode->data=d; // gán giá trị data cho d pNode->pNext=NULL;// và cho con trỏ pNext trỏ tới giá trị Null } else // Nếu pNode == Null, tức là pNode không có giá trị thì xuất thông tin { cout<<"Error allocated memory"; } return pNode;//trả về pNode }
Giải thích:
- Đầu tiên chúng ta sử dụng con trỏ pNode để tạo một Node mới.
- Kiểm tra nếu pNode != NULL, nghĩa là pNode có giá trị. Khi đó ta thực hiện:
- Gán giá trị data của node cho tham số d.
- Cho con trỏ pNext trỏ đến giá trị NULL.
- Nếu pNode không có giá trị thì hiển thị thôn báo ra màn hình.
- Sau khi xét điều kiện xong, ta thực hiện return pNote và kết thúc hàm.
Trên đây là hàm tạo node mới trong DSLK đơn. Hàm này chỉ sử dụng để tạo mới một node. Các bạn có thể sử dụng hàm nay trong DSLK đơn được cài đặt bằng pHead hoặc pHead & pTail đều được.
Full code tạo node mới trong DSLK đơn sử dụng pHead:
/* Khai báo giá trị data và con trỏ pNext trỏ tới phần tử kế tiếp */ struct Node { int data;// giá trị data của node Node *pNext;// con trỏ pNext }; /* Khai báo Node đầu pHead */ struct SingleList { Node *pHead; //Node đầu pHead }; /* khởi tạo giá trị cho Node */ void Initialize(SingleList &list) { list.pHead=NULL;// khởi tạo giá trị cho Node là Null } /* tạo Node trong danh sách liên kết đơn */ Node *CreateNode(int d) { Node *pNode=new Node; //sử dụng pNode để tạo một Node mới if(pNode!=NULL) // Nếu pNode != Null, tức là pNode có giá trị thì { pNode->data=d; // gán giá trị data cho d pNode->pNext=NULL;// và cho con trỏ pNext trỏ tới giá trị Null } else // Nếu pNode == Null, tức là pNode không có giá trị thì xuất thông tin { cout<<"Error allocated memory"; } return pNode;//trả về pNode }
Full code tạo node mới trong DSLK đơn sử dụng pHead và pTail:
/* Khai báo giá trị data và con trỏ pNext trỏ tới phần tử kế tiếp */ struct Node { int data;// giá trị data của node Node *pNext;// con trỏ pNext }; /* Khai báo Node đầu pHead và Node cuối pTail*/ struct SingleList { Node *pHead; //Node đầu pHead Node *pTail; // Node cuối pTail }; /* khởi tạo giá trị cho Node đầu và Node cuối */ void Initialize(SingleList &list) { list.pHead=list.pTail=NULL;// khởi tạo giá trị cho Node đầu và Node cuối là Null } /* tạo Node trong danh sách liên kết đơn */ Node *CreateNode(int d) { Node *pNode=new Node; //sử dụng pNode để tạo một Node mới if(pNode!=NULL) // Nếu pNode != Null, tức là pNode có giá trị thì { pNode->data=d; // gán giá trị data cho d pNode->pNext=NULL;// và cho con trỏ pNext trỏ tới giá trị Null } else // Nếu pNode == Null, tức là pNode không có giá trị thì xuất thông tin { cout<<"Error allocated memory"; } return pNode;//trả về pNode }
Kết luận
Như vậy là chúng ta đã cùng nhau tìm hiểu về cách tạo node mới trong DSLK đơn. Qua bài viết này, mình muốn các bạn nắm rõ một số kiến thức sau đây:
- Cần cài đặt DSLK đơn trước khi tạo node mới. Có thể sử dụng pHead hoặc sử dụng pHead và pTail để cài đặt.
- Các bước để tạo node mới trong DSLK đơn.
Ở bài viết tiếp theo, mình sẽ hướng dẫn các bạn cách chèn node (Insert node) vào trong DSLK đơn. Các bạn nhớ chú ý theo dõi nhé, cảm ơn các bạn rất nhiều.