06/04/2021, 14:47

ạo Node mới trong danh sách liên kết đơn - Danh sách liên kết đơn

Trong bài này mình sẽ giới thiệu các bạn cách tạo một Node mới trong dánh sách liên kết đơn. Đây là bước đầu tiên để bạn có thể tạo được một danh sách liên kết hoàn chỉnh. Chúng ta sẽ cùng nhau tìm hiểu xem trong hàm tạo Node cần chú ý đến những điểm nào và điều kiện cần để có thể tạo được một ...

Trong bài này mình sẽ giới thiệu các bạn cách tạo một Node mới trong dánh sách liên kết đơn. Đây là bước đầu tiên để bạn có thể tạo được một danh sách liên kết hoàn chỉnh.

Chúng ta sẽ cùng nhau tìm hiểu xem trong hàm tạo Node cần chú ý đến những điểm nào và điều kiện cần để có thể tạo được một Node mới.

1. Điều kiện cần để tạo một Node mới trong DSLK đơn

Như các bạn đã biết thì DSLK đơn là một cấu trúc dữ liệu, vì vậy để có thể tạo được một Node trong DSLK đơn chúng ta cần khai báo cấu trúc và khởi tạo giá trị cho các Node.

Ở bài trước chúng ta đã thực hiện tạo cấu trúc dữ liệu cho DSLK đơn bằng (pHead) và (pHead, pTail). Đây chính là điều kiện cần để có thể tạo một Node mới.

/* 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
}

2. Tạo Node mới trong DSLK đơn

Sau khi chúng ta đã khai báo các cấu trúc dữ liệu trong DSLK đơn và khởi tạo giá trị Null cho Node. Như vậy là các bạn có thể tạo một Node mới cho danh sách được rồi.

tao node moi PNG

Để tạo Node mới chúng ta thực hiện các bước sau:

  • Đầu tiên chúng ta sẽ sử dụng *pNode để tạo một Node mới.
  • Tiếp đến xét điều kiện, nếu pNode có giá trị thì gán giá trị data đó cho tham số d và dùng pNext trỏ đến giá trị Null. Nếu pNode không có giá trị thì hiển thị thông báo ra màn hình.
  • Sau khi xét điều kiện thì return pNode và kết thúc hàm.
/* 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
}

Việc tạo Node mới trong DSLK đơn sử dụng pHead hay pHead pTail đều giống nhau. Khi dùng pHead pTail để quản lý danh sách liên kết, cấu trúc Node không đổi nhưng cấu trúc danh sách liên kết sẽ bổ sung thêm pTail.

Full Code:

/* 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 đã tìm hiểu xong cách tạo Node mới trong danh sách liên kết đơn và điều kiện cần để tạo được Node. Ở các bài tiếp theo chúng ta sẽ cùng nhau thực hiện các thao tác thêm, sữa, xóa đối với DSLK đơn. Hãy chú ý theo dõi nhé!!!

0