Cần giải đáp thắc mắc về hàm và cấp phát động con trỏ

em mới học môn cấu trúc dữ liệu và giải thuật, em cần tạo 1 danh sách liên kết đơn kiểu số nguyên, nhưng có dòng code này em không hiểu tại sao phải cấp phát động con trỏ mà trong khi hàm đã return con trỏ.

NODE* CreateNode(int x)
{
    NODE* temp = new NODE;
    temp->info = x;
    temp->pNext = NULL;
    return temp;
}
void AddTail(LIST& L, NODE* temp)
{
    if (L.pHead == NULL)
        L.pHead = L.pTail = temp;
    else
    {
        L.pTail->pNext = temp;
        L.pTail = temp;
    }
}
void CreateList(LIST& L)
{
    int x;
    cin >> x;
    if (x == -1)
        cout << "Empty List.";
    else
    {
        while (x != -1)
        {
            AddTail(L, CreateNode(x));
            cin >> x;
        }
    }
}

Bạn đang nói đến hàm CreateNode() đấy à?
Khai báo và cấp phát cho con trỏ là chuyện thường mà bạn. Hàm thực hiện luôn việc gán giá trị số nguyên cho con trỏ vừa tạo mới.

Bạn dùng từ “đã” làm mình tưởng thực hiện return trước khi cấp phát. Rõ ràng là việc cấp phát thực hiện trước khi return.

3 Likes

vậy nếu không cấp phát động thì sao ạ

Thì con trỏ chưa được trỏ đến đâu hết và bằng NULL hay null_ptr gì đấy. :thinking:
Sẽ có lỗi khi truy xuất giá trị của con trỏ chưa được gán.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?